1

そのため、nextInt()を使用して、コマンドラインでユーザーから整数入力を取得しています。しかし、私の質問は; ユーザーが整数を入力しない場合、つまり何も入力せずにEnterキーを押すだけの場合、nextInt()は終了しませんが、ユーザーが整数を入力するまでユーザーにプロンプ​​トを表示し続けます。その最初の「入力なし」を入力として受け取り、整数が入力されなかったことを示すエラーメッセージを返すことは可能ですか?前もって感謝します!

4

5 に答える 5

1
 String line = null;
    int val = 0;
    try {
      BufferedReader is = new BufferedReader(
        new InputStreamReader(System.in));
      line = is.readLine();
      val = Integer.parseInt(line);
    } catch (NumberFormatException ex) {
      System.err.println("Not a valid number: " + line);
    } catch (IOException e) {
      System.err.println("Unexpected IO ERROR: " + e);
    }
    System.out.println("I read this number: " + val);
于 2012-08-26T08:48:11.917 に答える
0

これを試して

 int number;
 boolean is_valid;

    do {
        try {
            System.out.print("Enter Number :");
            Scanner kbd = new Scanner(System.in);
            number = kbd.nextInt();
            is_valid = true;
        } catch (Exception e) {
            System.out.println("Invalid Integer ");
            is_valid = false;
        }
    } while (!is_valid);
于 2012-08-26T10:50:18.317 に答える
0

を使用していると仮定していますScanner。その場合、どちらを使用するかを指定する必要がありdelimiterます。このようなもの:

Scanner scanner = new Scanner(System.in);
scanner.useDelimiter(System.getProperty("line.separator")); 
while (scanner.hasNextInt()){
    int i = sc.nextInt();
    /** your code **/
}
于 2012-08-26T08:48:15.357 に答える
0

try/catch を実行できます。

String input = ....
try {
    int x = Integer.parseInt(input);
    System.out.println(x);
}
catch(NumberFormatException nFE) {
    System.out.println("Not an Integer");
}
于 2012-08-26T08:50:02.633 に答える
0

整数の代わりに、入力を文字列として取得してみてください。文字列が空の場合、言及したエラーが発生するか、文字列を整数に変換します。あなたのプログラムの流れがわからないので、一般的な考え方として、入力に応じて文字列の解析が必要になります。また、このメソッドを使用する前に、整数以外が入力として与えられていないことを確認する必要があります。

于 2012-08-26T08:51:34.707 に答える