Comment lire une entrée d'entier long à l'aide de Scanner en Java

JavaJavaBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce tutoriel, nous allons explorer le processus de lecture d'entrées de grands entiers à l'aide de la classe Java Scanner. Nous aborderons les étapes et les techniques essentielles pour garantir une saisie de données précise et fiable, ainsi que la manière de gérer les exceptions courantes liées à la saisie numérique qui peuvent survenir au cours du processus.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/ObjectOrientedandAdvancedConceptsGroup -.-> java/user_input("User Input") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/exceptions("Exceptions") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/wrapper_classes("Wrapper Classes") subgraph Lab Skills java/user_input -.-> lab-417653{{"Comment lire une entrée d'entier long à l'aide de Scanner en Java"}} java/exceptions -.-> lab-417653{{"Comment lire une entrée d'entier long à l'aide de Scanner en Java"}} java/wrapper_classes -.-> lab-417653{{"Comment lire une entrée d'entier long à l'aide de Scanner en Java"}} end

Introduction à Java Scanner

En Java, la classe Scanner est un outil puissant pour lire des entrées à partir de diverses sources, notamment la console, les fichiers et les connexions réseau. Elle offre un moyen simple et efficace de parser et d'interpréter différents types de données d'entrée, y compris les entiers, les nombres à virgule flottante, les chaînes de caractères, etc.

La classe Scanner fait partie du package java.util, et elle peut être importée à l'aide de la déclaration suivante :

import java.util.Scanner;

Pour créer un objet Scanner et l'utiliser pour lire des entrées, vous pouvez suivre les étapes suivantes :

  1. Créez un nouvel objet Scanner, en passant la source d'entrée en tant que paramètre :

    Scanner scanner = new Scanner(System.in);

    Dans cet exemple, nous créons un objet Scanner qui lit les entrées à partir de la console (entrée standard).

  2. Utilisez les méthodes appropriées fournies par la classe Scanner pour lire différents types d'entrées. Par exemple, pour lire un entier, vous pouvez utiliser la méthode nextInt() :

    int number = scanner.nextInt();

    La classe Scanner fournit diverses autres méthodes, telles que nextDouble(), nextLine(), nextBoolean(), etc., pour lire différents types de données.

  3. N'oubliez pas de fermer l'objet Scanner une fois que vous avez terminé de l'utiliser pour libérer les ressources système :

    scanner.close();

En utilisant la classe Scanner, vous pouvez facilement lire et traiter les entrées utilisateur dans vos applications Java, les rendant plus interactives et conviviales.

Lecture de grands entiers avec Scanner

Alors que la méthode nextInt() de la classe Scanner est adaptée pour lire des entiers de taille standard, elle peut ne pas être en mesure de gérer des valeurs entières très grandes, telles que celles qui dépassent la plage du type de données int en Java. Dans de tels cas, vous pouvez utiliser la méthode nextLong() pour lire des valeurs entières longues.

Le type de données long en Java peut stocker des valeurs entières dans la plage de -9 223 372 036 854 775 808 à 9 223 372 036 854 775 807, ce qui est beaucoup plus grand que la plage du type de données int (-2 147 483 648 à 2 147 483 647).

Voici un exemple de comment utiliser la méthode nextLong() pour lire une entrée d'entier long :

import java.util.Scanner;

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

        System.out.print("Enter a long integer: ");
        long longNumber = scanner.nextLong();

        System.out.println("You entered: " + longNumber);

        scanner.close();
    }
}

Dans cet exemple, nous créons un objet Scanner et utilisons la méthode nextLong() pour lire l'entrée d'entier long de l'utilisateur. L'entrée est ensuite stockée dans la variable longNumber et affichée sur la console.

N'oubliez pas de gérer les exceptions potentielles qui peuvent se produire lors de la lecture de l'entrée, comme InputMismatchException si l'utilisateur saisit une valeur non numérique. Nous aborderons cela dans la section suivante.

Gestion des exceptions liées à la saisie numérique

Lors de la lecture d'entrées numériques à l'aide de la classe Scanner, il est important de gérer les exceptions potentielles qui peuvent se produire. Une exception courante est InputMismatchException, qui est levée lorsque l'utilisateur saisit une valeur non numérique.

Pour gérer ces exceptions, vous pouvez utiliser un bloc try-catch pour capturer l'exception et fournir une gestion d'erreur appropriée. Voici un exemple :

import java.util.InputMismatchException;
import java.util.Scanner;

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

        try {
            System.out.print("Enter a long integer: ");
            long longNumber = scanner.nextLong();
            System.out.println("You entered: " + longNumber);
        } catch (InputMismatchException e) {
            System.out.println("Error: Invalid input. Please enter a valid long integer.");
        } finally {
            scanner.close();
        }
    }
}

Dans cet exemple, nous enveloppons l'appel scanner.nextLong() dans un bloc try. Si l'utilisateur saisit une valeur non numérique, l'exception InputMismatchException est capturée et nous affichons un message d'erreur. Enfin, nous fermons l'objet Scanner dans le bloc finally pour nous assurer que les ressources système sont correctement libérées.

En gérant les exceptions, vous pouvez rendre vos applications Java plus robustes et offrir une meilleure expérience utilisateur en gérant gracieusement les entrées inattendues.

De plus, vous pouvez utiliser une boucle pour inviter l'utilisateur à saisir des données jusqu'à ce qu'un entier long valide soit entré. Voici un exemple :

import java.util.InputMismatchException;
import java.util.Scanner;

public class NumericInputException {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        long longNumber;
        boolean validInput = false;

        while (!validInput) {
            try {
                System.out.print("Enter a long integer: ");
                longNumber = scanner.nextLong();
                validInput = true;
                System.out.println("You entered: " + longNumber);
            } catch (InputMismatchException e) {
                System.out.println("Error: Invalid input. Please enter a valid long integer.");
                scanner.nextLine(); // Clear the input buffer
            }
        }

        scanner.close();
    }
}

Dans cet exemple, nous utilisons une boucle while pour inviter l'utilisateur à saisir des données jusqu'à ce qu'un entier long valide soit entré. L'appel scanner.nextLine() est utilisé pour vider le tampon d'entrée après la capture d'une exception InputMismatchException, permettant à l'utilisateur d'entrer une nouvelle valeur.

En gérant les exceptions et en mettant en place un processus de validation d'entrée robuste, vous pouvez vous assurer que vos applications Java peuvent gérer gracieusement une variété d'entrées utilisateur et offrir une meilleure expérience utilisateur globale.

Résumé

À la fin de ce tutoriel, vous aurez une bonne compréhension de la manière de lire des entrées d'entiers longs à l'aide de la classe Java Scanner, ainsi que la capacité de gérer les exceptions liées à la saisie numérique qui peuvent survenir. Cette connaissance sera inestimable dans votre parcours de programmation Java, vous permettant de créer des applications robustes et conviviales.