2
我遇到了扫描程序在无限期while循环期间未阻止用户输入的问题。我试过使用hasNextLine()
,并没有奏效。它只是运行循环无限地调用displayMenu()
。在循环期间Java扫描程序不阻止
do {
displayMenu();
int response;
while (iStream.hasNextLine()) {
response = Integer.parseInt(iStream.nextLine());
switch (response) {
case 1:
decodeMessage(getPhrase());
break;
case 2:
encodeMessage(getPhrase());
break;
case 3:
displayAlphabet();
break;
case 4:
done = true;
System.out.println("Goodbye.");
break;
default:
done = false;
}
}
}
while (!done);
我也尝试不使用hasNextLine()
但我结束了一个NoSuchElementException
因为它贯穿完美第一次,但在第二次迭代中,它不会阻止用户输入。
do {
displayMenu();
int response = Integer.parseInt(iStream.nextLine());
switch (response) {
case 1:
decodeMessage(getPhrase());
break;
case 2:
encodeMessage(getPhrase());
break;
case 3:
displayAlphabet();
break;
case 4:
done = true;
System.out.println("Goodbye.");
break;
default:
done = false;
}
}
while (!done);
有什么想法?
为什么嵌套while循环的?为什么不使用while while循环来检查是否检查hasNextLine()'的if块? – 2013-02-09 16:31:48
我只是不明白为什么它不阻塞。对于System.in应该是吧?如果我改变它是有条件的,我会把开关体放在if语句中吗?尽管如此,我仍然可以无限地调用displayMenu()。 – 2013-02-09 16:39:28