Maison  >  Article  >  Java  >  Pourquoi est-ce que je reçois une exception InputMismatchException lors de la lecture de valeurs doubles avec le scanner ?

Pourquoi est-ce que je reçois une exception InputMismatchException lors de la lecture de valeurs doubles avec le scanner ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-05 21:21:02150parcourir

Why Am I Getting an InputMismatchException When Reading Double Values with Scanner?

Pourquoi l'exception InputMismatchException se produit-elle lors de l'obtention de valeurs doubles ?

En Java, lorsque vous utilisez Scanner pour lire des valeurs doubles, une exception InputMismatchException peut se produire si l'entrée n'adhère pas strictement au format décimal attendu.

Comprendre le problème :

Le code fourni contient les méthodes checkValueWithin et AskForMarks. checkValueWithin est destiné à valider la saisie numérique dans une plage spécifiée.

Le problème survient dans la méthode AskForMarks, où la saisie de l'utilisateur est censée être une valeur double comprise entre 0 et 30. Cependant, la saisie peut être formatée. incorrectement, provoquant l'échec du scanner lors de l'analyse de la valeur double.

Correction :

Ce problème peut être résolu en veillant à ce que la saisie de l'utilisateur soit formatée à l'aide d'une virgule comme séparateur décimal au lieu d'un point. Par exemple, au lieu de 1,2, saisissez 1,2. Cela correspond à la représentation des valeurs doubles en Java.

Voici le code modifié pour AskForMarks :

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

Cette modification garantit que les valeurs doubles sont saisies correctement, empêchant le scanner de rencontrer une exception InputMismatchException.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn