Java 布尔值在这个程序中是如何工作的?
有人能告诉我为什么会发生此错误以及如何更正它吗?Java 布尔值在这个程序中是如何工作的?,java,java.util.scanner,Java,Java.util.scanner,有人能告诉我为什么会发生此错误以及如何更正它吗?caseArray有一百个元素,而您要对每个元素执行next(),即使要拆分的字符串中只有四个元素 由于temp字符串是硬编码的,因此不需要扫描仪。事实上,将其作为数组或列表来保存要简单得多: List cases=Arrays.asList(“yes”、“no”、“do”、“you”); found=cases.contains(inputInfo); 您是否缺少一些代码?这看起来不像是一个好主意。例如,您在哪里初始化inputInfo和foun
caseArray
有一百个元素,而您要对每个元素执行next()
,即使要拆分的字符串中只有四个元素
由于temp
字符串是硬编码的,因此不需要扫描仪。事实上,将其作为数组或列表来保存要简单得多:
List cases=Arrays.asList(“yes”、“no”、“do”、“you”);
found=cases.contains(inputInfo);
您是否缺少一些代码?这看起来不像是一个好主意。例如,您在哪里初始化inputInfo
和found
?为什么在这里使用Scanner
,而不是像temp.split(“/”)
?@sleepToken我编辑了我的代码很抱歉that@Abion47我也可以用。那么错误呢?输入有4个值,数组有100个位置,循环100次,所以调用next()
100次,您会感到困惑,在4个值用完后,它会与NoTouchElementException
一起失败?我想使用Scanner类。为了理解目的,我举了一个例子。@SashrikR您想使用扫描仪的原因是什么?
public class HelloWorld{
public static void main(String [] args){
boolean found = false;
inputInfo = "do";
String temp = "yes/no/do/you";
Scanner scan = new Scanner(temp); // caseS scanner class
scan.useDelimiter("/"); // Delimiter
String[] caseArray = new String[100];
while (scan.hasNext()) {
for (int i = 0; i < caseArray.length; i++) {
caseArray[i] = scan.next();
}
for(int j = 0; j< caseArray.length; j++) {
if(caseArray[j].equals(inputInfo)) {
found = true;
break;
}
}
if(found){
System.out.print("product found");
} else{
System.out.print("product not found");
}
}
}
}
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1371)