Maison >Java >javaDidacticiel >Pourquoi est-ce que je reçois une « NoSuchElementException » lorsque j'utilise la classe Scanner de Java ?

Pourquoi est-ce que je reçois une « NoSuchElementException » lorsque j'utilise la classe Scanner de Java ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-04 02:45:11853parcourir

Why Am I Getting a

Dépannage « NoSuchElementException » dans Java.Util.Scanner

L'erreur « NoSuchElementException » en Java est généralement provoquée par une tentative de lecture à partir de une source d'entrée fermée ou vide à l'aide de la classe Scanner. Dans votre cas, cette exception se produit lorsque vous essayez de lire le deuxième entier de l'utilisateur (ligne 17 de votre code).

Pour déboguer ce problème, examinons la classe Scanner en détail :

Classe Scanner

La classe Scanner vous permet de lire des données texte à partir d'une source, telle que System.in (la console). Ses méthodes vous permettent d'extraire différents types de données, y compris des entiers (nextInt()), de la source.

Dans votre code, vous créez un objet Scanner appelé "input" pour lire les entrées de la console. Vous essayez ensuite de lire deux valeurs entières dans les variables numéro1 et numéro2.

Analyse des erreurs

L'erreur "NoSuchElementException" suggère que l'objet Scanner s'attend à trouver un entier sur la ligne d'entrée suivante mais je n'en trouve pas. Cela peut se produire pour plusieurs raisons :

  • Aucune saisie d'entier : Assurez-vous que vous avez bien saisi deux entiers sur des lignes distinctes dans la console.
  • Type d'entrée incorrect : Vérifiez à nouveau que l'entrée que vous fournissez est de type int.
  • Scanner fermé : Assurez-vous que le scanner n'est pas fermé avant de tenter de lire l'entrée.

Solution proposée

Pour résoudre ce problème, pensez à ajouter une vérification pour vérifier que le scanner a un autre entier à lire avant de tenter d'extraire it :

if (input.hasNextInt()) {
  number2 = input.nextInt(); 
} else {
  // Handle the case where no integer is found
  // (e.g., display an error message or set number2 to a default value)
}

En incorporant cette vérification, vous pouvez déterminer s'il existe un autre entier disponible avant d'essayer de le lire. S'il n'y en a pas, vous pouvez prendre les mesures appropriées, comme afficher un message d'erreur ou définir le numéro 2 sur une valeur par défaut.

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