我有一個程序的以下部分,它模擬了一個非常基本的菜單。我如何優雅地使java.util.Scanner再次等待輸入?
while (true) {
int selection;
try {
selection = scanner.nextInt();
} catch (Exception e) {
selection = -1;
}
switch (selection) {
case 0:
System.exit(0);
default:
System.out.println("No valid selection!");
}
}
現在,每當我輸入不的整數,所述selection
設爲-1
並打印錯誤消息。然而,循環繼續不斷,Scanner
不等待任何輸入。
如何讓它再次等待?如何在這裏更好地處理格式錯誤的用戶輸入?
的問題是什麼@EtiennedeMartel描述了他的答案; 'nextInt()'不會在失敗時從掃描器中移除令牌,因此他的程序進入無限循環(就像你的那樣)。 –
這不起作用。如果'nextInt()'失敗,則任何對'nextInt()'的調用都將再次失敗,直到數據從流中被移除。 –
是的,這不起作用,只是拋出後續的異常。 – slhck