我需要在循环内进行输入,但遇到诸如NoSuchElementException
之类的问题。不太确定这个问题。
要提供有关我的要求的一些信息,如果用户连续键入yes
直到用户键入no
,我必须执行一个功能。
代码:
// Toppings
while(true) {
Scanner st = new Scanner(System.in);
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)");
}
}
答案 0 :(得分:0)
您关闭的扫描器不止一个,从而关闭了基础的InputStream
,因此另一个Scanner
无法再从相同的InputStream
中读取,结果为NoSuchElementException
将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)");
}
}
答案 1 :(得分:-1)
我的问题是不完整的,在toppingOptions
函数内部,我有另一个扫描器对象被关闭,因此在删除扫描器对象后,请关闭这项工作。