Maison > Java > javaDidacticiel > Comment éviter « NoSuchElementException » lors de l'utilisation du « Scanner » de Java ?

Comment éviter « NoSuchElementException » lors de l'utilisation du « Scanner » de Java ?

Patricia Arquette
Libérer: 2024-12-04 22:59:12
original
659 Les gens l'ont consulté

How to Avoid `NoSuchElementException` When Using Java's `Scanner`?

Débogage de NoSuchElementException en Java

Lorsque vous rencontrez "NoSuchElementException" lors de l'utilisation de la classe Scanner de Java, cela indique une divergence entre l'entrée fournie et la les attentes de la classe. L'erreur se produit lorsque le scanner tente de récupérer une valeur mais qu'aucune valeur n'est trouvée.

Considérez l'extrait de code suivant :

import java.util.Scanner;

public class Addition {
  public static void main(String[] args) {
    Scanner input = new Scanner(System.in);

    int number1, number2, sum;

    System.out.print("Enter First Integer: ");
    number1 = input.nextInt();

    System.out.print("Enter Second Integer: ");
    number2 = input.nextInt();

    sum = number1 + number2;
    System.out.printf("Sum is %d\n", sum);
  }
}
Copier après la connexion

Si l'utilisateur ne saisit qu'un seul entier et appuie sur Entrée avant de saisir le deuxièmement, il lancera un NoSuchElementException.

Solution

Pour résoudre ce problème, vérifiez la disponibilité d'un autre entier avant de le lire. Voici une version modifiée du code :

if (input.hasNextInt()) {
  number1 = input.nextInt();
} else {
  // Handle input error or set number1 to a default value
}
Copier après la connexion

En incorporant cette vérification, le code garantit qu'il ne lit un entier que lorsqu'il est disponible, empêchant ainsi l'exception.

Alternative Option

Une autre approche consiste à utiliser la méthode hasNextLine() pour vérifier s'il y a d'autres entrées, puis à appeler nextLine() pour vider le tampon avant de tenter de récupérer un autre entier.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal