Java 如何将用户字符串输入与整个数组中的字符串进行比较?

Java 如何将用户字符串输入与整个数组中的字符串进行比较?,java,arrays,if-statement,Java,Arrays,If Statement,在我的程序中,我有一个带有团队名称的数组,我要做的是收集用户输入,检查输入是否与数组中的任何团队名称匹配。如果我在if语句中插入参数,我一次只能让它检查数组中的一个字符串: if(teamName.equals(teams[0]) 。 但是我想检查数组中的所有字符串,而不是一次检查一个字符串 Scanner input = new Scanner(System.in); String[] teams = new String [20]; teams[0] = "Ars

在我的程序中,我有一个带有团队名称的数组,我要做的是收集用户输入,检查输入是否与数组中的任何团队名称匹配。如果我在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?");
    }
}   

只需将它们放入
集合
,并使用
包含
方法即可

因此,请进行以下更改:

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?");
}
Set teamSet=new TreeSet();
Collections.addAll(团队集、团队);
System.out.println(“请输入团队:”);
字符串teamName=input.nextLine();
if(teamSet.contains(teamName)){
System.out.println(“您喜欢:+teamName”);
}否则{
System.out.println(“谁?”);
}

使用java8,这将是一个可能的解决方案:

 if(Arrays.stream(teams).anyMatch(t -> t.equals(teamName))) {
     System.out.println("You like: " + teamName);
 } else {
     System.out.println("Who?");
 }

将此方法添加到代码中

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?");
}


当然,您也可以将各个团队分别放在
集合中,但这会很乏味:)谢谢您的帮助!我还想知道,您是否知道一种方法,可以检查团队名称的输入,而不必将第一个字母大写,以使其在“如果”中被接受?最简单的方法是使用小写。Paul的asnwer的优点是可以使用
equalsIgnoreCase
,这对于
Set
方法(直接)是不可能的。您可以将
anyMatch
视为一个循环,但我不认为它在内部使用
hashCode
。请尝试查看链接。
if(arrayContainsTeam(teamName)) {
        System.out.println("You like: " + teamName);
}
else {
    System.out.println("Who?");
}