Je suis très nouveau sur Java, mais je suis en train de lire le livre Java: Comment programmer (neuvième édition) et suis parvenu à un exemple où, pour la vie de moi, je ne peux pas comprendre le problème.
Voici une version (légèrement) augmentée de l'exemple de code source dans le manuel:
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
Je reçois l'erreur '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:
Je comprends que cela est probablement dû à quelque chose dans le code source incompatible avec la classe Scanner
de Java.util
, mais je ne peux vraiment pas en dire plus pour en déduire quel est le problème.
NoSuchElementException
Lancé par la méthode nextElement
d'une énumération pour indiquer qu'il n'y a plus d'éléments dans l'énumération.
http://docs.Oracle.com/javase/7/docs/api/Java/util/NoSuchElementException.html
Que dis-tu de ça :
if(input.hasNextInt() )
number1 = input.nextInt(); // if there is another number
else
number1 = 0; // nothing added in the input
NoSuchElementException
sera lancé s'il n'y a plus de jetons disponibles . Cela est dû à l'appel de nextInt()
sans vérifier s'il existe un entier disponible . Pour éviter que cela ne se produise, vous pouvez envisager d'utiliser hasNextInt()
pour vérifier si d'autres jetons sont disponibles.
Vous devez utiliser hasNextInt()
avant d’attribuer une valeur à une variable.
Integer#nextInt
jette NoSuchElementException
- si l'entrée est épuisée
Vous devriez vérifier s'il y a une prochaine ligne avec Integer#hasNextLine
if(sc.hasNextLine()){
number1=sc.nextInt();
}
Vous devez ajouter input.close () à la fin ...