Pourquoi suis-je InputMismatchException?

Pour l'instant j'ai ceci:

public double checkValueWithin(int min, int max) {
    double num;
    Scanner reader = new Scanner(System.in);
    num = reader.nextDouble();                         
    while (num < min || num > max) {                 
        System.out.print("Invalid. Re-enter number: "); 
        num = reader.nextDouble();                         
    }
    return num;
}

et ce:

public void askForMarks() {
    double marks[] = new double[student];
    int index = 0;
    Scanner reader = new Scanner(System.in);
    while (index < student) {
        System.out.print("Please enter a mark (0..30): ");
        marks[index] = (double) checkValueWithin(0, 30); 
        index++;
    }
}

Quand j'ai tester, il ne peut pas prendre de doubles numéro et j'ai eu ce message:

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextDouble(Scanner.java:2456)
at MarkingSystem.checkValueWithin(MarkingSystem.java:25)
at MarkingSystem.askForMarks(MarkingSystem.java:44)
at World.main(World.java:6)
Java Result: 1

Comment puis-je résoudre ce problème?

docs.oracle.com/javase/1.5.0/docs/api/java/util/... Regardez ce. Peut-être que le scanner n'a pas été en mesure d'analyser ce que vous avez entré dans la console? Par exemple, elle a demandé un certain nombre, vous avez saisi "bonjour"?
Essayez de faire "nextFloat" à la place.
Supprimer Scanner reader = new Scanner(System.en); à partir de la askForMarks(); Tout fonctionne pour moi alors.
vérifier ma mise à jour.

OriginalL'auteur Trần Trung | 2012-12-25