所以我有一個方法getInput,它的意思是,要求用戶輸入,使用try-catch確保它是一個正確的數據類型(在這種情況下爲int)並驗證它是否在預定義的範圍內。問題是,當我輸入一個字符串時,它會重複輸入不正確的消息,在try {}中輸出我要求輸入的消息,並直接捕獲而無需等待輸入。 下面的代碼:while循環try-catch塊不會在循環後等待try塊中的輸入一次
public static int getInput(String message, int lowerLimit, int upperLimit) {
while (true) {
int input;
try {
System.out.println(message);
input = scanner.nextInt();
if (lowerLimit > input && input > upperLimit) {
return input;
} else {
System.out.println("Incorrect input value, try again");
}
} catch (Exception e) {
System.out.println("Incorrect input, try again");
}
}
}
我知道還有其他工作實現這一點的方式,但我想知道爲什麼這一次不工作 - 我認爲它應該。有任何想法嗎?
'scanner'的定義是什麼? –
此答案應該可以幫助你:http://stackoverflow.com/a/15973109/1291717 –