Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,如何使用数组在一行中设置多个选择临界值?_Java_Arrays_Java.util.scanner - Fatal编程技术网

在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一起使用,而无需任何大小写转换。