Итак, у меня есть класс Team, который используется для создания объектов Team. В другом классе с именем LeagueAdmin я создаю карту типа map<String, List<Team>
, как вы можете видеть в моем коде, я задаю ключ к строке деления и затем назначаю объекты команды различным подразделениям.
Моя проблема заключается в том, что я пытаюсь создать метод, который находит две указанные команды в подразделении, сравнивает два целых числа и, если x больше, чем y, вызывает определенный метод для каждого объекта. Т.е. если команда A забивает больше голов, чем команда B, увеличьте объект с тем же именем, что и значение победы teamA, на 1.
Мой код LeageAdmin:
import java.util.*;
public class LeagueAdmin {
private Map<String, List<Team>> teams;
/**
* Constructor for objects of class LeagueAdmin
*
*/
public LeagueAdmin() {
this.teams = new HashMap<>();
}
public void addTeam(String division, Team team) {
if (!this.teams.containsKey(division)) {
List<Team> teamList = new ArrayList<>();
teamList.add(team);
this.teams.put(division, teamList);
} else {
List<Team> newTeam = this.teams.get(division);
newTeam.add(team);
this.teams.put(division, newTeam);
}
}
public void recordResult(String division, String teamA, String teamB, int teamAScore, int teamBScore)
{
List<Team> teamList = teams.get(division);
for(Team team : teamList) {
if(teamA.equals(team.getName())) {
teamA = String.valueOf(team);
} else if (teamB.equals(team.getName())) {
teamB = String.valueOf(team);
}
}
if (teamAScore == teamBScore)
{
teams.get(division).get(teamA).incDrew();
teams.get(division).get(teamB).incDrew();
} else if (teamAScore > teamBScore) {
teams.get(division).get(teamA).incWon();
teams.get(division).get(teamB).incLost();
} else {
teams.get(division).get(teamA).incLost();
teams.get(division).get(teamB).incWon();
}
}
}
и код для Команды:
public class Team
{
private String name;
private String division;
private int won;
private int drew;
private int lost;
// no need to record points as = 3*won + drew
/**
* Constructor for objects of class Team
*/
public Team(String aName, String aDivision)
{
name = aName;
division = aDivision;
// no need to set won, drew and lost to 0
}
/**
* getter for attribute points
*/
public int getPoints()
{
return 3 * won + drew;
}
/**
* getter for name
*/
public String getName()
{
return name;
}
/**
* getter for division
*/
public String getDivision()
{
return division;
}
/**
* getter for won
*/
public int getWon()
{
return won;
}
/**
* getter for drew
*/
public int getDrew()
{
return drew;
}
/**
* getter for lost
*/
public int getLost()
{
return lost;
}
/**
* increments the number of games won
*/
public void incWon()
{
won = won + 1;
}
/**
* increments the number of games drawn
*/
public void incDrew()
{
drew = drew + 1;
}
/**
* increments the number of games lost
*/
public void incLost()
{
lost = lost + 1;
}
/**
* setter for division
*/
public void setDivision(String aDivision)
{
division = aDivision;
}
public String toString()
{
return ("Team " + name + ", division: " + division + " stats: Won: " + won
+ ", drew: " + drew + ", lost: " + lost + ", points: " + getPoints());
}
}
Как вы можете видеть, код для метода recordResult (), с которым у меня возникла проблема, когда я ссылаюсь на строку из аргументов метода, кажется, он думает, что он должен получать целое число? Мой код даже почти прав или есть лучший способ?
public void recordResult(String division, String teamA, String teamB, int teamAScore, int teamBScore)
{
teamA = null;
teamB = null;
List<Team> teamList = teams.get(division);
for(Team team : teamList) {
if(teamA.equals(team.getName())) {
teamA = String.valueOf(team);
} else if (teamB.equals(team.getName())) {
teamB = String.valueOf(team);
}
}
if (teamAScore == teamBScore)
{
teams.get(division).get(teamA).incDrew();
teams.get(division).get(teamB).incDrew();
} else if (teamAScore > teamBScore) {
teams.get(division).get(teamA).incWon();
teams.get(division).get(teamB).incLost();
} else {
teams.get(division).get(teamA).incLost();
teams.get(division).get(teamB).incWon();
}
}