それはすべて機能しますが、ひどいように見えます。データを描画するために与えられているのは、ホッケープレーヤーのデータを含むテキストファイルだけです。次に、このデータを取得して、そこからプレーヤーを作成します。次に、これらのプレーヤーのリストを作成します。各チームの勝利数は決して与えられていないので、これがあなたにできる最善のことであるかどうか、私はほとんど疑問に思っています。
基本的に、達成したいのは、最も多くの勝利を収めたチームを見つけることです。これは、各プレーヤーの勝利の目標が合計され、彼らがどのチームから来たのかを判断し、そのチームのためにそれを数えることによって見つけられます。
これは、すべてのプレーヤーを調べて一意のチーム名を見つけることにより、チームオブジェクトとしてチームのリストを作成することで実現しました。
次に、プレーヤーリストを調べました。プレーヤーのチームが、現在見ているチームと同じである場合、勝利したゴールのポイントが与えられます。
次に、さらに別のforループで、これらの目標の量が最も多いチームを見つけます。
このチームを返します。
これは、1つの小さなタスクの合計4つのforループです。ひどいようです。
/**
* Returns the team with the most wins
*/
public Team getTeamWithMostWins() {
Team teamWithMostWins = new Team();
List<Team> teams = new List<Team>();
if (!players.isEmpty()) {
// Compile the List of teams
for (int i = 0; i < players.size(); i++) {
if (!teams.contains(players.get(i).getTeam())) {
teams.add(new Team(players.get(i).getTeam()));
}
}
// Set the wins for the teams
for (int i = 0; i < players.size(); i++) {
String team = players.get(i).getTeam();
int winningGoals = players.get(i).getWinningGoals();
// Go through the teams List to set the points
for (int j = 0; j < teams.size(); j++) {
// If the current player's team is equal to the current team in the loop
if ((teams.get(j).getName()).equals(team)) {
teams.get(j).incrementWinsBy(winningGoals);
}
}
}
int mostWins = teams.get(0).getWins();
// Find the team with the most wins
for (int i = 1; i < teams.size(); i++) {
if (teams.get(i).getWins() > mostWins) {
teamWithMostWins = teams.get(i);
}
}
}
else {
teamWithMostWins = null;
}
return teamWithMostWins;
}