2017-02-20 30 views
0

例外処理

誤った入力後に2つのintを入力できるようにします。私は続けた。キャッチブロックでは、それは実行時エラーを投げただけです。私はそれがエラーを投げた後にメインメソッドの先頭に戻るようにしたい。写真でどのように数字を入力することができなかったかを見てください。私はその部分を修正したい。

ここにコードがあります。これは練習のためだけです。

スキャナバッファあなたの中に不正な入力を取り除く
/** 
practing exceptions, example 1 in book for exceptions 
*/ 

    import java.util.Scanner; 

    public class PracticeExceptions extends Exception { 

    public static void main(String[] args) 
    { 
    String response = "y"; 
    Scanner keyboard = new Scanner(System.in); 

    do{ 
    int n1, n2; 
    double r; 
    System.out.println("Please enter two numbers"); 

    try{ 
      n1 = keyboard.nextInt(); 
      n2 = keyboard.nextInt(); 
      r = (double) n1/n2;  

     System.out.format("Your answer: %.2f %n", r); 

     }catch(Exception a){ 

     System.out.println("Invaild input please try again"); 

     } 

     System.out.println("Again (y/n)"); 
     response = keyboard.next(); 

     }while(response.equalsIgnoreCase("y")); 
    } 
    } 
+0

例外をキャッチして無視することは、非常に悪いことです。ちょうど 'if'を使用してください –

+0

あなたが何を意味するかわからない、これは下位レベルのJavaの練習用です。たぶん最高ではないかもしれませんが、私は限られた量のJavaを学んだだけです。だから、実用のためだけです – MoneyMonster

+0

@MonkeyMonster私はtry-catchを使う代わりに 'if'を使います。ユーザーがあなたに有効でない値を与えることを期待しています(n2 = 0)。ユーザーに依存しない例外に対しては、try-catchを使用する必要があります。 'if(n2 == 0){isValid = false;}' –

答えて

0

}catch(Exception a){ 
    System.out.println("Invalid input please try again"); 
    keyboard.next(); 
} 

あなたがループする場合のコードは今keyboard.next();continueを追加先頭に戻るSystem.out.println("Again (y/n)");

に落下します

+0

でも同じことをすることができますが、それでも2つ以上のintを入力するようにユーザーに依頼することはありません。 – MoneyMonster

+0

答え –

+0

ありがとう、私はちょうど追加して、スムーズに働いた。私は何が起こっているのか見た。 – MoneyMonster