我在while循環中做出了選擇菜單。爲了確保用戶有一個有效的選擇,我把菜單本身放在一個try catch塊中:圍繞選擇菜單嘗試捕捉
我希望用戶獲得一個新的機會,如果發生異常,所以我把try-catch塊放入一段時間(真)的循環。但是,使用這種循環,動作編碼的部分變成不可達代碼。
有沒有辦法做得更好?
還有一個問題,我如何防止用戶輸入不存在的選項?
while (choice != 0) {
/* Ask for player's choice */
while(true) {
try
{
BufferedReader menuInput = new BufferedReader(new InputStreamReader(System.in));
System.out.println();
System.out.println("Please choose between the following options:'");
System.out.println(" (1) Make new animal");
System.out.println(" (2) Feed Animals");
System.out.println(" (3) Count animals");
System.out.println(" (0) Quit");
System.out.print("Enter your choice: ");;
choice = Integer.parseInt(menuInput.readLine());
} catch (NumberFormatException ex) {
System.err.println("Not a valid number");
} catch (IOException e) {
System.out.println("Failed to get input");
}
}
// first choice option:
if (choice == 1) {
//actions
}
// second choice option:
if (choice == 2) {
//actions
}
// third choice option:
if (choice == 3) {
//actions
}
}
System.out.print("Thank you for playing!")
應該有一些條件*斷*循環。例如,一個'break'聲明。 – David
您可以編寫一個額外的私有方法,在處理當前選擇之前驗證輸入。 – pidabrow