Java建模,处理文件和对象

世界杯目前正在进行中,但组织者非常健忘。
他们需要一个系统来帮助他们跟踪比赛的进展,并确定哪些球队在小组中获胜,以及接下来应该进行哪些比赛。
定义一个名为FootballTeam的类。这个类将用于跟踪比赛小组赛阶段的球队进度。
这意味着我们需要能够记住或计算所有相关的统计数据。
FootballTeam类中的方法应该基于以下描述实现:
public String getName() - 返回团队的名称
public int getWins() - 返回球队获胜的场次
public int getLosses() - 返回球队输掉的场次
public int getDraws() - 返回球队平局的场次
public int getPoints() - 返回球队的得分(胜3分,平1分,负0分)
public int getGoalsFor() - 返回该队在所有比赛中的进球数
public int getGoalsAgainst() - 返回其他球队在与该队比赛时的进球数
public int addGame(Game g) - 添加该队进行的一场比赛的结果为了在测试系统中运行,您还必须添加具有以下签名的构造函数:
public FootballTeam(String name)。

以下为Java语言实现示例代码和解释,望采纳:

public class FootballTeam {
    private final String name;
    private int wins;
    private int losses;
    private int draws;
    private int goalsFor;
    private int goalsAgainst;

    public FootballTeam(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public int getWins() {
        return wins;
    }

    public int getLosses() {
        return losses;
    }

    public int getDraws() {
        return draws;
    }

    public int getPoints() {
        return wins * 3 + draws;
    }

    public int getGoalsFor() {
        return goalsFor;
    }

    public int getGoalsAgainst() {
        return goalsAgainst;
    }

    public int getGoalDifference() {
        return goalsFor - goalsAgainst;
    }

    public int addGame(Game game) {
        if (game.getHomeTeam().equals(this.name)) {
            // 更新主场比赛统计数据
            goalsFor += game.getHomeTeamGoals();
            goalsAgainst += game.getAwayTeamGoals();
            if (game.getHomeTeamGoals() > game.getAwayTeamGoals()) {
                wins++;
            } else if (game.getHomeTeamGoals() < game.getAwayTeamGoals()) {
                losses++;
            } else {
                draws++;
            }
        } else if (game.getAwayTeam().equals(this.name)) {
            // 更新客场比赛统计数据
            goalsFor += game.getAwayTeamGoals();
            goalsAgainst += game.getHomeTeamGoals();
            if (game.getAwayTeamGoals() > game.getHomeTeamGoals()) {
                wins++;
            } else if (game.getAwayTeamGoals() < game.getHomeTeamGoals()) {
                losses++;
            } else {
                draws++;
            }
        }
    }
}

上述代码中,FootballTeam类包含了一些记录团队信息的字段,例如团队名称、胜场次数、平局次数、负场次数、进球数等。


通过构造函数可以创建一个FootballTeam对象,并通过公共方法访问团队信息。例如,可以使用getName方法获取团队名称,使用getWins方法获取团队获胜场次数等。


此外,FootballTeam类还包含了一个addGame方法,用于向该团队添加一场比赛结果。在这个方法中,它会判断该团队是主场队还是客场队,然后根据比赛结果更新团队的统计数据。

import java.util.ArrayList;
import java.util.List;

class Game {
    /**
     * 进球数
     */
    private int jinQiuShu;
    /**
     * 输球数
     */
    private int shuQiuShu;

    public Game(int jinQiuShu, int shuQiuShu) {
        this.jinQiuShu = jinQiuShu;
        this.shuQiuShu = shuQiuShu;
    }

    public int getJinQiuShu() {
        return jinQiuShu;
    }

    public int getShuQiuShu() {
        return shuQiuShu;
    }
}

interface Team {
    String getName();

    int getWins();

    int getLosses();

    int getDraws();

    int getPoints();

    int getGoalsFor();

    int getGoalsAgainst();

    int addGame(Game g);
}

public class FootballTeam implements Team {
    private String name;
    private List<Game> games = new ArrayList<>();

    public FootballTeam(String name) {
        this.name = name;
    }

    @Override
    public String getName() {
        return this.name;
    }

    @Override
    public int getWins() {
        int count = 0;
        for (int i = 0; i < games.size(); i++) {
            final Game game = games.get(i);
            if (game.getJinQiuShu() > game.getShuQiuShu()) {
                count++;
            }
        }
        return count;
    }

    @Override
    public int getLosses() {
        int count = 0;
        for (int i = 0; i < games.size(); i++) {
            final Game game = games.get(i);
            if (game.getJinQiuShu() < game.getShuQiuShu()) {
                count++;
            }
        }
        return count;

    }

    @Override
    public int getDraws() {
        int count = 0;
        for (int i = 0; i < games.size(); i++) {
            final Game game = games.get(i);
            if (game.getJinQiuShu() == game.getShuQiuShu()) {
                count++;
            }
        }
        return count;
    }

    @Override
    public int getPoints() {
        return this.getWins() * 3 + this.getDraws();
    }

    @Override
    public int getGoalsFor() {
        int sum = 0;
        for (int i = 0; i < games.size(); i++) {
            sum += games.get(i).getJinQiuShu();
        }
        return sum;
    }

    @Override
    public int getGoalsAgainst() {
        int sum = 0;
        for (int i = 0; i < games.size(); i++) {
            sum += games.get(i).getShuQiuShu();
        }
        return sum;

    }

    @Override
    public int addGame(Game g) {
        this.games.add(g);
        return this.games.size();
    }
}