Warum bin ich immer InputMismatchException?

Bisher habe ich dieses:

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;
}

und so:

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++;
    }
}

Wenn ich dies zu testen, kann es nicht die doppelte Anzahl, und ich bekam diese Meldung:

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

Wie kann ich dieses Problem beheben?

docs.oracle.com/javase/1.5.0/docs/api/java/util/... ansehen. Vielleicht war der scanner nicht in der Lage zu analysieren, was Sie eingegeben in der Konsole? Zum Beispiel, fragte Sie nach einer Zahl, die Sie eingegeben "Hallo"?
Versuchen Sie "nextFloat" statt.
Entfernen Sie Scanner reader = new Scanner(System.in); aus der askForMarks(); funktioniert Alles für mich.
check mein update.

InformationsquelleAutor Trần Trung | 2012-12-25

Schreibe einen Kommentar