我正在為與菜單上的數字相對應的食品菜單創建數組列表。其中大部分被遺漏了:我的主要問題是錯誤消息不會在用戶第一次不輸入整數值時顯示。按下回車鍵后控制臺上不會顯示任何內容,但如果我再次輸入不是整數的內容,它將正常工作并顯示錯誤消息。編輯:還有一點我應該注意的是,在代碼的前面我使用了相同的掃描儀對象,所以使用 .next() 來清除它以前的值。 orderArray = new String[length]; menuDisplay(); int item; //the item number that user must enter for(int i=1; i<=length;i++) { System.out.println("Please choose item #"+ i+": "); scan.next(); while(!scan.hasNextInt()) //this while loop checks that an integer value has been entered { System.out.println("Please enter an integer value from the above menu."); scan.next(); } }
1 回答

繁星淼淼
TA貢獻1775條經驗 獲得超11個贊
hasNextInt檢查下一個令牌,而不是剛剛收到的令牌,所以總是在調用之前hasNextXxx() 先調用nextXxx()。
您還想實際獲取整數值并將其分配給item.
像這樣重新排列您的代碼:
System.out.println("Please choose item #"+ i+": ");
while (!scan.hasNextInt()) //this while loop checks that an integer value has been entered
{
System.out.println("Please enter an integer value from the above menu.");
scan.next(); // skip bad token
}
item = scan.nextInt();
添加回答
舉報
0/150
提交
取消