Maison > Java > javaDidacticiel > Pourquoi mon scanner Java génère-t-il une exception NoSuchElementException et comment puis-je la corriger ?

Pourquoi mon scanner Java génère-t-il une exception NoSuchElementException et comment puis-je la corriger ?

Barbara Streisand
Libérer: 2024-12-05 15:03:14
original
660 Les gens l'ont consulté

Why Does My Java Scanner Throw a NoSuchElementException, and How Can I Fix It?

NoSuchElementException Frustrations avec Java.Util.Scanner

Rencontrer une erreur "NoSuchElementException" peut être déroutant, en particulier pour les novices Java comme vous. Cette erreur se produit lorsque la classe Scanner ne peut pas récupérer le jeton suivant du flux d'entrée. Examinons votre code spécifique pour découvrir la cause première :

import java.util.Scanner;

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

    int number1; // first number to add
    int number2; // second number to add
    int sum; // sum of 1 & 2

    // Problem: Reading input values without checking for input availability

    System.out.print("Enter First Integer: ");
    number1 = input.nextInt(); // Exception occurs here when no input is provided

    System.out.print("Enter Second Integer: ");
    number2 = input.nextInt(); // Exception occurs here if input is not available for this prompt

    sum = number1 + number2; // Addition occurs, assuming input values are available

    System.out.printf("Sum is %d\n", sum); // Displays the sum, if input is available
  }
}
Copier après la connexion

Le problème réside dans le code qui tente de lire l'entrée sans vérifier au préalable si l'entrée est disponible. La méthode input.nextInt() génère une "NoSuchElementException" si l'utilisateur ne fournit pas d'entrée ou saisit autre chose qu'un entier.

Solution :

Pour éliminer ce problème, nous devons vérifier la disponibilité des entrées avant de tenter de récupérer it :

if (input.hasNextInt()) {
  number1 = input.nextInt();
} else {
  // Handle the case where no input is provided
}
Copier après la connexion

Explication :

La méthode hasNextInt() vérifie si le jeton suivant dans le flux d'entrée est un entier. S'il renvoie vrai, la méthode input.nextInt() peut être utilisée pour récupérer l'entier. Sinon, le code peut gérer la situation avec élégance, comme définir le numéro 1 sur 0 ou afficher un message d'erreur.

En implémentant cette vérification, votre code ne lancera plus de "NoSuchElementException" et se comportera comme prévu, permettant les utilisateurs peuvent saisir des entiers et calculer leur somme.

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