java.util.NoSuchElementException:在循环内使用scanner时未发现任何行异常
我需要在循环中获取输入,但遇到问题,比如java.util.NoSuchElementException:在循环内使用scanner时未发现任何行异常,java,exception,Java,Exception,我需要在循环中获取输入,但遇到问题,比如NoSuchElementException。对这个问题不是很确定 为了提供有关我的需求的一些信息,如果用户连续键入yes,我必须执行一个函数,直到用户键入no 代码: 您关闭的扫描仪不止一个,这将关闭底层的InputStream,因此另一个Scanner无法再从同一InputStream读取数据,并且NoTouchElementException结果 将st移出while循环 Scanner st = new Scanner(System.in); //
NoSuchElementException
。对这个问题不是很确定
为了提供有关我的需求的一些信息,如果用户连续键入yes
,我必须执行一个函数,直到用户键入no
代码:
您关闭的扫描仪不止一个,这将关闭底层的
InputStream
,因此另一个Scanner
无法再从同一InputStream
读取数据,并且NoTouchElementException
结果
将st移出while循环
Scanner st = new Scanner(System.in);
// Toppings
while(true) {
System.out.println("Do you need to add more toppings:(yes/no)");
String decision = st.nextLine();
if(decision.equals("yes")) {
cake = toppingOption(cake);
}
else if(decision.equals("no")) {
st.close();
break;
}
else {
System.out.println("Wrong input, type (yes/no)");
}
}
我的问题不完整,在
toppingOptions
功能中,我关闭了另一个扫描仪对象,因此在我移除扫描仪对象后,关闭此工作。虽然建议正确,但这不是问题所在。此代码中仅关闭了一个扫描仪@hien nguyen是的,你的建议就是问题所在,这只是代码的一部分,在TopingOption方法中,我有另一个扫描对象,我关闭了它,很抱歉没有提到这一点。再次感谢。
Scanner st = new Scanner(System.in);
// Toppings
while(true) {
System.out.println("Do you need to add more toppings:(yes/no)");
String decision = st.nextLine();
if(decision.equals("yes")) {
cake = toppingOption(cake);
}
else if(decision.equals("no")) {
st.close();
break;
}
else {
System.out.println("Wrong input, type (yes/no)");
}
}