我想遍历ArrayList继续足球俱乐部对象。我正在尝试检索名称并将其与用户输入进行比较,以检查其是否为有效团队。在检查时,它检查第一个输入(team1)并设法找出它是否在ArrayList中,但在第二个输入中则没有。即使(team2)作为有效团队存在于ArrayList中,它仍然表示不存在
String team1 = userInput.nextLine();
String team2 = userInput.nextLine();
for(int i =0; i < addStats.size(); i++)
{
if(addStats.get(i).getClubName().equals(team1)) {
for(FootballClub clubs: addStats)
{
if(clubs.getClubName().equals(team2))
{
break;
}
else{
System.out.println(team2 + " is not a valid team");
return;
}
}
break;
} else {
System.out.println(addStats.get(i).getClubName());
System.out.println(team1 + " is not a valid team");
return;
}
}
该代码似乎失败了,因为它想将它们进行比较FootballClub
以匹配两者team1
,team2
并且除非team1
等于,否则它不会为真team2
。
如果任务是验证FootballClub
实例列表是否包含具有给定名称的俱乐部,则应实现一个单独的简单方法:
static boolean clubListHasTeam(List<FootballClub> clubs, String team) {
boolean found = false;
for (FootballClub club : clubs) {
if (club.getClubName().equals(team)) {
found = true;
break;
}
}
return found;
}
使用Java Stream API有助于使此方法更简洁:
static boolean clubListHasTeam(List<FootballClub> clubs, String team) {
return clubs.stream()
.map(FootballClub::getClubName) // stream of the club names
.anyMatch(team::equals); // any club name matched the input name
}
用法:
String team1 = userInput.nextLine();
String team2 = userInput.nextLine();
boolean valid = true;
if (!clubListHasTeam(addStats, team1)) {
System.out.println(team1 + " is invalid");
valid = false;
}
if (!clubListHasTeam(addStats, team2)) {
System.out.println(team2 + " is invalid");
valid = false;
}
非常感谢,这对您有很大帮助!