2016-04-18 10 views
0

私はこのhwの問題を抱えています - 数字を読み取り、すべての2進数字を表示するプログラムを書いてください:残りの数字%2を印字し、数字をnumber/2に置き換えてください。数字が0になるまで続けてください。 2桁の数字は正常に表示されますが、文字を使用するとクラッシュしないように箇条書きします。クラッシュすることはありませんが、プログラムを再起動せずに別の番号を入力できるようにしたいと考えています。どのように私はこれを行うことができます上の任意のヒント?try-catchでループ中に弾丸を書こうとします

Scanner scanIn = new Scanner(System.in); 
    int number = 0; 
    System.out.print("Please enter a number: "); 
    try { 
     number = scanIn.nextInt(); 
    } catch (InputMismatchException ime) { 
     System.out.println("Please only enter integers!"); 
     number = 0;  
     scanIn.nextLine(); 
    }    
    while (number > 0) { 
     System.out.println(number % 2); 
     number /= 2; 
    } 
} 
+2

あなたは 'scanner.hasNextInt()'のようなものをお探しですか? – Harvtronix

+1

私はあなたがまだそれから利益を得ることができると思います。あなたが入力を取得した部分をラップする必要があります。入力が終わったら終了します。 – Harvtronix

+1

@Harvtronixのように 'hasNextInt()'を正しく使うと、例外を捕捉する必要はありません。 'InputMismatchException'は投げられないからです。 – Andreas

答えて

0

あなたはそれが整数(Integer.parseInt())になるまで、最初の1が入力を取る2つのループ、 を必要としますが、その入力を確認しているときのtry/catchすると

に囲まれましたループを開始する整数です。

+0

'Integer.tryParse()'? – saka1029

+0

申し訳ありません - 早朝、その\t整数parseInt(String s)ですが、TryCatchで囲まれています。 –

0

あるアプローチでは、コードを別のwhileループに囲み、永続的に反復し、特定の条件が満たされたときにループから抜け出す方法があります。無効な入力が入力された場合、整数を入力するようにコードを修正しました。

Scanner scanIn = new Scanner(System.in); 
int number = 0; 

while(true) { 
    System.out.print("Please enter an integer, or 0 to quit: "); 

    // input verification 
    boolean valid = false; 
    while(!valid) { 
     try { 
      number = scanIn.nextInt(); 
      valid = true; 
     } catch (InputMismatchException ime) { 
      System.out.println("Please only enter integers!"); 
      System.out.print("Please enter an integer, or 0 to quit: "); 
      valid = false; 
     } 
    } 

    // break out of the loop if 0 is entered 
    if(number == 0) { 
     break; 
    } 

    while (number > 0) { 
     System.out.println(number % 2); 
     number /= 2; 
    } 
} 
関連する問題