亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

檢查輸入是否為數字時出現邏輯錯誤,如果不是則重新請求用戶輸入直到有效

檢查輸入是否為數字時出現邏輯錯誤,如果不是則重新請求用戶輸入直到有效

神不在的星期二 2023-07-19 17:08:55
當輸入無效輸入時,它會轉到 catch 塊并無限執行 catch 塊,而不循環回 try 塊以獲取另一個輸入當輸入有效數據時它起作用public static double getInputNumber(Scanner input){    double num=0;    while(true) {        try {            num = input.nextDouble();            return num;        } catch (Exception ex) {            System.out.println("Invalid value entered.. Enter again : ");        }    }}預期 - 當輸入無效值時,向用戶顯示錯誤消息并重新輸入,直到用戶輸入有效值。實際 - 當輸入無效值時,它會在屏幕上重復顯示錯誤消息,而無需重新輸入
查看完整描述

2 回答

?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

很可能輸入已關閉,或者 中的下一個標記input不是雙精度。其中任何一個都會導致拋出異常,而不提前輸入,從而導致無限循環。


因此,您需要找出錯誤的原因,采取適當的措施 - 例如,類似:


public static double getInputNumber(Scanner input){

    double num=0;

    while(true) {

              try {

                  num = input.nextDouble();

                  return num;

               } catch (InputMismatchException ex) {

                   System.out.println("Invalid value entered.. Enter again : ");

               } catch (NoSuchElementException ex) {

                   System.out.println("Input exhausted ");

                   return 0;

               } catch (IllegalStateException ex) {

                   System.out.println("Scanner closed ");

                   return 0;

               }

          }

    }

}

您還可以input.hasNextDouble()在致電之前檢查一下nextDouble()


查看完整回答
反對 回復 2023-07-19
?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

只需添加 input.next()


} catch (Exception ex) {

   System.out.println("Invalid value entered.. Enter again : ");

   input.next();

}

input.next() 清除掃描儀。


查看完整回答
反對 回復 2023-07-19
  • 2 回答
  • 0 關注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號