我正在尝试将数组(字符串)与输入中的常规字符串进行比较。这可能吗?我有我的测试代码,它主要只是说
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!");
}
答案 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!");
}