在java中,如何使用数组在一行中设置多个选择临界值?
更准确地说,有没有可能做出这样的事情:在java中,如何使用数组在一行中设置多个选择临界值?,java,arrays,java.util.scanner,Java,Arrays,Java.util.scanner,更准确地说,有没有可能做出这样的事情: String[] varIn={"1", "2", "3"}; in=input.nextLine(); if(in.equalsIgnoreCase(varIn[0]) || in.equalsIgnoreCase(varIn[1]) || in.equalsIgnoreCase(varIn[2])) Sy
String[] varIn={"1",
"2",
"3"};
in=input.nextLine();
if(in.equalsIgnoreCase(varIn[0]) ||
in.equalsIgnoreCase(varIn[1]) ||
in.equalsIgnoreCase(varIn[2]))
System.out.println(" it works! ");
String[] varIn={"1",
"2",
"3"};
in=input.nextLine();
if(in.equalsIgnoreCase(varIn[])) // << varIn[]'s place should contain all
// the strings in varIn[]
System.out.println(" it works! ");
变成这样:
String[] varIn={"1",
"2",
"3"};
in=input.nextLine();
if(in.equalsIgnoreCase(varIn[0]) ||
in.equalsIgnoreCase(varIn[1]) ||
in.equalsIgnoreCase(varIn[2]))
System.out.println(" it works! ");
String[] varIn={"1",
"2",
"3"};
in=input.nextLine();
if(in.equalsIgnoreCase(varIn[])) // << varIn[]'s place should contain all
// the strings in varIn[]
System.out.println(" it works! ");
其中,ifin.equalsIgnoreCasevarIn[]将包含数组中所有字符串要比较的所有字符串。我很确定有办法做到这一点,但我不知道怎么做。有没有可能有人对此有其他选择或解决方案?提前谢谢
编辑:删除打字错误如果可以使用Java 8,则可以使用for循环或流管道进行编辑:
if (Stream.of(varIn).anyMatch(s->in.equalsIgnoreCase(s)))
或
这是假设您只希望将一个in变量与数组元素进行比较,[1]和[2]中出现的变量可能是输入错误。在Java 8之前的版本中:
Set<String> varIn = new HashSet<>(Arrays.asList("1", "2", "3"));
in = readLine();
if(in != null && varIn.contains(in.toLowerCase())) ... //maybe, toUpperCase
还要提到的是,这是Java8plus,如果仅为该检查而创建,则不需要中间varIn数组。在这种情况下,Stream.of1,2,3也可以。@MarkusBenko这是真的,但我们不知道它是否只是为了这个检查而创建的。@Eran这也是真的,但是知道Stream.of在Java 8和/或Stream API中还存在重载变体也不会有什么坏处。通过使用新的treeseString.CASE_INSENSITIVE_顺序,然后添加这三个元素,您将拥有一个集合,可以直接与containsin一起使用,而无需任何大小写转换。