Maison >Java >javaDidacticiel >Pourquoi est-ce que je reçois une exception NoSuchElementException lors de l'utilisation de nextInt() du scanner ?

Pourquoi est-ce que je reçois une exception NoSuchElementException lors de l'utilisation de nextInt() du scanner ?

DDD
DDDoriginal
2024-11-16 06:26:03423parcourir

Why Am I Getting a NoSuchElementException When Using Scanner's nextInt()?

Accident nextInt() du scanner : comprendre l'exception NoSuchElementException

Lorsque vous essayez de récupérer un entier à l'aide de la méthode nextInt() du scanner, vous pouvez rencontrer un erreur redoutée : NoSuchElementException. Cela se produit lorsqu'il n'y a plus d'entiers disponibles pour la récupération à partir du flux d'entrée.

Pour identifier le coupable, nous examinons l'extrait de code :

Scanner s = new Scanner(System.in);
int choice = s.nextInt(); // Error occurs here
s.close();

La méthode nextInt() suppose qu'un entier attend d'être lu, mais dans notre cas, il se peut qu'il n'y en ait pas. Pour éviter cette erreur, nous pouvons exploiter les méthodes hasNextXXXX() fournies par Scanner. Ces méthodes vérifient la disponibilité du type de données approprié, garantissant que l'entrée est prête à être récupérée.

Dans ce scénario spécifique, nous pouvons rectifier le problème en employant hasNextInt() :

Scanner s = new Scanner(System.in);
int choice = 0;

if (s.hasNextInt()) {
    choice = s.nextInt();
}

s.close();

La vérification hasNextInt() garantit qu'un entier existe avant de tenter de le récupérer avec nextInt(). Cela élimine la possibilité de NoSuchElementException.

Alors, rappelez-vous, lorsque vous utilisez la méthode nextInt() de Scanner, utilisez toujours hasNextInt() pour garantir qu'un entier attend d'être consommé.

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