私はJavaが初めてですが、Java:プログラミング方法(第9版)の本を読んでおり、私の人生で問題が何であるかがわからない例に到達しました。 。
以下は、教科書のソースコード例の(わずかに)拡張されたバージョンです。
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:
これはおそらくJava.util
のScanner
クラスと互換性のないソースコードの何かが原因であることを理解していますが、問題の原因を推測する上でこれ以上のことはできません。です。
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
NoSuchElementException
がスローされます 使用可能なトークンがもうない場合 。これは、チェックせずにnextInt()
を呼び出すことで発生します 利用可能な整数がある場合 。発生しないようにするには、hasNextInt()
を使用して、トークンがさらに使用可能かどうかを確認することを検討してください。
変数に値を割り当てる前に、hasNextInt()
を使用する必要があります。
Integer#nextInt
throws NoSuchElementException
-入力が使い果たされた場合
次の行にInteger#hasNextLine
があるかどうかを確認する必要があります
if(sc.hasNextLine()){
number1=sc.nextInt();
}
最後にinput.close()を追加する必要があります...