是否可以将数组字符串与普通字符串进行比较?

时间:2016-02-11 19:09:12

标签: java arrays compare user-input

我正在尝试将数组(字符串)与输入中的常规字符串进行比较。这可能吗?我有我的测试代码,它主要只是说

incomparable types java.lang.string and java.lang.string[]

这是我的测试代码:

 String[] yes = new String[5];
yes[0] = "yes";
yes[1] = "yeah";
yes[2] = "sure";
yes[3] = "yupp";
yes[4] = "okay";
System.out.println("Input");
String input = scan.next();
if ((input).equalsIgnoreCase(yes)) {
  System.out.println("compared!");
}

4 个答案:

答案 0 :(得分:2)

最有效的解决方案是创建一组字符串,然后调用set.contains以查看输入字符串是否存在于集合中。示例代码:

 HashSet<String> stringSet = new HashSet<String>();
    //All string are already lower case so no need of toLowerCase() here
    stringSet.add("yes");
    stringSet.add("yeah");
    stringSet.add("sure");
    stringSet.add("yupp");
    stringSet.add("okay");
    System.out.println("Input");
    String input = scan.next();
    if (stringSet.contains(input.toLowerCase())) {
      System.out.println("compared!");
    }

答案 1 :(得分:1)

您需要指定数组中的哪个索引进行检查。

数组中的所有五个条目都不同,Java不知道要检查哪个条目。

您可能希望使用for循环来迭代所有可能性,并将每个条目与输入进行比较。

答案 2 :(得分:1)

我会使用某种形式的迭代来逐步遍历数组:

\\h*,\\h*

在您阅读输入后,沿着这些方向的东西。

答案 3 :(得分:0)

假设yes中的值均为小写

String[] yes = new String[]{"yes", "yeah", "sure", "yupp", "okay"};
System.out.println("Input");
String input = scan.next();
if (Arrays.asList(yes).contains(input.toLowerCase())) {
  System.out.println("compared!");
}

或与lambdas一起,忽略案例,如 fabian 在评论中所建议

String[] yes = new String[]{"yes", "yeah", "sure", "yupp", "okay"};
System.out.println("Input");
String input = scan.next();
if (Arrays.stream(yes).anyMatch(input::equalsIgnoreCase)) {
  System.out.println("compared!");
}