1. ホーム
  2. java

[解決済み] Java.Util.ScannerでNoSuchElementExceptionが発生する。

2022-03-06 13:31:13

質問

私はJavaの初心者ですが、Javaという本を読み進めています。How to program (9th ed.) を読んでいるのですが、ある例題にたどり着いたときに、何が問題なのかがどうしてもわかりません。

以下は、教科書に載っているソースコードの例を(少し)補強したものです。

import java.util.Scanner;
public class Addition {
  public static void main(String[] args) {
    // creates a scanner to obtain input from a command window

    Scanner input = new Scanner(System.in);

    int number1; // first number to add
    int number2; // second number to add
    int sum; // sum of 1 & 2

    System.out.print("Enter First Integer: "); // prompt
    number1 = input.nextInt(); // reads first number inputted by user

    System.out.print("Enter Second Integer: "); // prompt 2 
    number2 = input.nextInt(); // reads second number from user

    sum = number1 + number2; // addition takes place, then stores the total of the two numbers in sum

    System.out.printf( "Sum is %d\n", sum ); // displays the sum on screen
  } // end method main
} // end class Addition

NoSuchElementException'エラーが発生します。

Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:838)
at java.util.Scanner.next(Scanner.java:1461)
at java.util.Scanner.nextInt(Scanner.java:2091)
at java.util.Scanner.nextInt(Scanner.java:2050)
at Addition.main(Addition.java:16)
Enter First Integer:

これはおそらく、ソースコードに何か互換性のないものがあるためだと理解しています。 Scanner クラスから java.util しかし、何が問題なのかを推し量るという点では、これ以上は本当に無理なのです。

解決方法は?

NoSuchElementException で投げる。 nextElement メソッドを使用して、列挙された要素がもうないことを示します。

http://docs.oracle.com/javase/7/docs/api/java/util/NoSuchElementException.html

これはどうでしょう.

if(input.hasNextInt() )
     number1 = input.nextInt(); // if there is another number  
else 
     number1 = 0; // nothing added in the input