在我的程序中,我有一个包含团队名称的数组,我想要做的是收集用户输入,检查输入是否与数组中的任何团队名称匹配。如果我提出if语句的争论,我一次只能检查数组中的一个字符串:
if(teamName.equals(teams[0])
。 但我想检查数组中的所有字符串,而不是一次检查一个
Scanner input = new Scanner(System.in);
String[] teams = new String [20];
teams[0] = "Arsenal";
teams[1] = "Aston Villa";
teams[2] = "Burnley";
teams[3] = "Chelsea";
teams[4] = "Crystal Palace";
teams[5] = "Everton";
teams[6] = "Hull City";
teams[7] = "Leicester City";
teams[8] = "Liverpool";
teams[9] = "Manchester City";
teams[10] = "Manchester United";
teams[11] = "Newcastle United";
teams[12] = "QPR";
teams[13] = "Southampton";
teams[14] = "Sunderland";
teams[15] = "Spurs";
teams[16] = "Stoke";
teams[17] = "Swansea";
teams[18] = "West Ham";
teams[19] = "West Brom";
System.out.println("Please enter a team: ");
String teamName = input.nextLine();
if(teamName.equals(teams)) {
System.out.println("You like: " + teamName);
}
else {
System.out.println("Who?");
}
}
答案 0 :(得分:2)
使用java8,这将是一个可能的解决方案:
if(Arrays.stream(teams).anyMatch(t -> t.equals(teamName))) {
System.out.println("You like: " + teamName);
} else {
System.out.println("Who?");
}
答案 1 :(得分:0)
只需将它们放在Set
中,然后使用contains
方法。
因此,请进行以下更改:
Set<String> teamSet = new TreeSet<>();
Collections.addAll(teamSet, teams);
System.out.println("Please enter a team: ");
String teamName = input.nextLine();
if (teamSet.contains(teamName)) {
System.out.println("You like: " + teamName);
} else {
System.out.println("Who?");
}
答案 2 :(得分:0)
将此方法添加到您的代码中
public boolean arrayContainsTeam(String team)
{
boolean hasTeam = false;
for(String aTeam:teams) {
if(aTeam.equals(team)) {
return(true);
}
}
return(false);
}
然后替换
if(teamName.equals(teams)) {
System.out.println("You like: " + teamName);
}
else {
System.out.println("Who?");
}
与
if(arrayContainsTeam(teamName)) {
System.out.println("You like: " + teamName);
}
else {
System.out.println("Who?");
}