我正在寫一個腳本,用戶只能輸入正整數。我用try catch和while循環來使用掃描器。該循環將不斷要求用戶輸入正確的信息。只接受正整數使用try catch,而
我可以檢查負整數,但字符串或其他瘋狂的東西呢?
int price = 0;
Scanner input = new Scanner(System.in);
try {
System.out.println("Enter max price: ");
price = input.nextInt();
if (price > 0) {
input.close();
} else {
while (price < 0) {
System.out.println("Negative values not allowed");
System.out.println("Enter max price: ");
price = input.nextInt();
}
input.close();
}
} catch (InputMismatchException e1) {
}
我有種陷在catch部分..
用'nextLine()'讀整行並使用'Integer.parseInt()'嘗試解析一個'int'。 –
另外,如果您計劃稍後閱讀輸入內容,則不需要關閉該掃描儀。就像一個人站起來一樣。 –
如果你**有**使用'try-catch'構造,那麼你將捕獲['nextInt']拋出的異常(http://docs.oracle.com/javase/7/docs/api/java /util/Scanner.html#nextInt())並生成錯誤消息並繼續執行,但整個'try-catch塊'應該在'while'內。 –