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!