2017-10-23 10 views
-1
System.out.println("Insert first number : "); 
Scanner ad = new Scanner(System.in); 
int y = ad.nextInt(); 
System.out.println("Insert Second Number: "); 
Scanner er = new Scanner(System.in); 
int x = er.nextInt(); 

int z; 
z = x + y; 

if (z > 10) { 
    System.out.println(z + " is greater than 10"); 
} else if (z < 9) { 
    System.out.println(z + " is less than 10"); 
} else { 
    System.out.println(z + " is equal to 10"); 
} 

数字の代わりに文字を入力すると、各if文の出力をエラーにします。 入力した文字が無効であることを出力します。変数の入力が数値ではない場合の無効な結果(出力)の挿入方法

+0

なぜ2つのスキャナインスタンスを使用するのですか? –

+0

ユーザーからの値を受け入れるときに、開始時に値がintかどうかを確認する必要があります。 – Ragxion

+1

[Java.util.scannerエラー処理]の重複の可能性あり(https://stackoverflow.com/questions/2696063/java-util-scanner-error-handling) – Stavr00

答えて

0

nextIntメソッドを使用すると、入力値が数値でない場合、InputMismatchExceptionがスローされます。次に、try-catchブロックとループを使用して検証できます。あなたはこれを行うと、それらの値を読みながら、自分の繰り返しを避けるためにヘルパーメソッドを使用することができます。

import java.util.InputMismatchException; 
import java.util.Scanner; 

public class Demo { 

    public static void main(String[] args) { 
     int x = readNumber(); 
     int y = readNumber(); 

     int z; 
     z = x + y; 

     if (z > 10) { 
      System.out.println(z + " is greater than 10"); 
     } else if (z < 9) { 
      System.out.println(z + " is less than 10"); 
     } else { 
      System.out.println(z + " is equal to 10"); 
     } 
    } 

    private static int readNumber() { 
     Scanner scanner = new Scanner(System.in); 
     boolean validInput; 
     int result = 0; 
     do { 
      try { 
       System.out.print("Insert a number : "); 
       result = scanner.nextInt(); 
       validInput = true; 
      } catch (InputMismatchException e) { 
       System.out.println("Not a valid number!"); 
       validInput = false; 
       scanner.nextLine(); // to consume the endline character 
      } 
     } while (!validInput); 
     return result; 
    } 
} 

別の方法をhasNextInt方法を使用することでしょう。

+0

ありがとうございます、あなたの代替方法が動作します。 – alkhemet

関連する問題