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

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

如何捕獲多個異常并循環,直到我得到有效的輸入?

如何捕獲多個異常并循環,直到我得到有效的輸入?

30秒到達戰場 2022-09-28 16:24:45
我必須捕獲3個異常并循環,直到輸入有效的輸入?,F在,我的程序在輸入有效輸入時結束,但只是連續循環無效輸入。它永遠不會捕獲異常。如果我取出循環并輸入一個“m”,它會捕獲算術異常,但會打印輸入不匹配“僅數字”的錯誤消息// Get input from user and perform integer divsion.do{    try{        System.out.print("Please enter a positive value for the numerator: ");        numerator = keyboard.nextInt();                System.out.print("Please enter a positive value for the denominator: ");        denominator = keyboard.nextInt();    }     catch(InputMismatchException e){          System.out.println("Enter only numbers.");    }    catch(NegativeValueException e){          System.out.println("no negative values.");    }    catch(ArithmeticException e){          System.out.println("Division by zero.");    }    if (numerator >=0 && denominator >= 0){        quotient = numerator / denominator;    }else if(numerator<0 && denominator <0){        throw new NegativeValueException();    }else        invalidInput = true;    System.out.println();    System.out.print("The result of integer division is: ");    System.out.println(quotient);    System.out.println();}while (invalidInput);  我只需要捕獲異常并讓它打印出異常和循環的相應錯誤消息,直到輸入有效輸入。如果沒有循環,它將捕獲負值,但不會打印錯誤并以構建失敗結束。任何幫助將不勝感激!
查看完整描述

3 回答

?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

既然你已經表現出了努力,但你似乎也是Java的新手,我正在嘗試糾正你的代碼。通常,不建議用于這種低水平的校正。


我們需要在捕獲它之前拋出一個異常 - 這就是你周圍的情況 - 。NegativeValueException


我假設變量 &類型 - , &是聲明和定義的。NegativeValueExceptioninvalidInputkeyboard


我已經提供了示例代碼,對您提出的代碼進行了最小的更改,盡管您提出的問題可以通過更好的代碼來解決。


do{

        invalidInput=false;

        try{


        System.out.print("Please enter a positive value for the numerator: ");

        int numerator = keyboard.nextInt();


        System.out.print("Please enter a positive value for the denominator: ");

        int denominator = keyboard.nextInt();

        if(numerator<0 && denominator <0){

           throw new NegativeValueException();

         }else if (numerator >=0 && denominator >= 0){

        int quotient = numerator / denominator;

        System.out.println();

        System.out.print("The result of integer division is: ");

        System.out.println(quotient);

        System.out.println();

        }

        } catch(InputMismatchException e){

            System.out.println("Enter only numbers.");

            invalidInput = true;

        }catch(NegativeValueException e){

            System.out.println("no negative values.");

            invalidInput = true;

        }catch(ArithmeticException e){

            System.out.println("Division by zero.");

            invalidInput = true;

        }

        }while (invalidInput);  


查看完整回答
反對 回復 2022-09-28
?
慕尼黑8549860

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

Scanner s = new Scanner(System.in);

do {

    try {

        System.out.print("Please enter a positive value for the numerator: ");

        int numerator = s.nextInt();

        System.out.print("Please enter a positive value for the denominator: ");

        int denominator = s.nextInt();

        int quotient = numerator / denominator;

    } catch (InputMismatchException e) {

        System.out.println("InputMismatchException " + e);

        System.exit(0);



    } catch (ArithmeticException e) {

        System.out.println("ArithmeticException " + e);

        System.exit(0);

    } catch (Exception e) {

        System.out.println("NegativeValueException " + e);

        System.exit(0);

    }

} while (true);


查看完整回答
反對 回復 2022-09-28
?
HUX布斯

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

實際上,問題是你在外面做數學運算,比如說如果它拋出一個程序通過這些檢查:try-blockexception


if (numerator >=0 && denominator >= 0) //  false as there was exception

else if(numerator<0 && denominator <0)  // false as there was exception

else

    invalidInput = true; //gets executed

執行每個異常并因此中斷 .將數學移入內部invalidInput = truedo-while looptry-block


試試這個代碼:


do

{

    try

    {

        System.out.print("Please enter a positive value for the numerator: ");

        numerator = keyboard.nextInt();

        System.out.print("Please enter a positive value for the denominator: ");

        denominator = keyboard.nextInt();

        if (numerator >=0 && denominator >= 0)

        {

            quotient = numerator / denominator;

        }

        else if(numerator<0 && denominator <0)

        {

            throw new NegativeValueException();

        }

        else

            invalidInput = true;


        System.out.println();

        System.out.print("The result of integer division is: ");

        System.out.println(quotient);

        System.out.println();

    } 

    catch(InputMismatchException e)

    {

        System.out.println("Enter only numbers.");

    }

    catch(NegativeValueException e)

    {

        System.out.println("no negative values.");

    }

    catch(ArithmeticException e)

    {

        System.out.println("Division by zero.");

    }


}while (invalidInput); 


查看完整回答
反對 回復 2022-09-28
  • 3 回答
  • 0 關注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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