Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Maîtriser Java Scanner : Guide complet avec exemples pratiques

Maîtriser Java Scanner : Guide complet avec exemples pratiques

La classe Scanner dans java.util permet de capturer l'entrée depuis des flux, fichiers, chaînes et la console. Voici ses principaux modes d'utilisation.


Exemple 1 : Lecture d'une ligne complète

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Entrez votre nom : ");
        String nom = input.nextLine();
        System.out.println("Je m'appelle " + nom);
        input.close();
    }
}

Sortie

Entrez votre nom : Kelvin
Je m'appelle Kelvin

La ligne Scanner input = new Scanner(System.in); construit un Scanner écoutant l'entrée clavier. nextLine() consomme la ligne entière jusqu'au saut de ligne.


Importation de la classe Scanner

Avant d'utiliser Scanner, importez-le :

import java.util.Scanner;

Création d'objets Scanner

Selon votre source d'entrée, instanciez un Scanner ainsi :

// Depuis un flux d'entrée (ex: System.in)
Scanner sc1 = new Scanner(InputStream input);
// Depuis un fichier
Scanner sc2 = new Scanner(File fichier);
// Depuis une chaîne
Scanner sc3 = new Scanner(String chaine);

Méthodes principales de Scanner pour la lecture

Scanner offre diverses méthodes pour lire différents types de données :

MéthodeDescription
nextInt()Lit un int
nextFloat()Lit un float
nextBoolean()Lit un boolean
nextLine()Lit une ligne complète de texte
next()Lit un seul mot (jusqu'à l'espace)
nextByte()Lit un byte
nextDouble()Lit un double
nextShort()Lit un short
nextLong()Lit un long

Exemple 2 : Utilisation de nextInt()

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Entrez un entier : ");
        int donnee1 = input.nextInt();
        System.out.println("Avec nextInt() : " + donnee1);
        input.close();
    }
}

Sortie

Entrez un entier : 22
Avec nextInt() : 22

Exemple 3 : Utilisation de nextDouble()

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Entrez une valeur double : ");
        double valeur = input.nextDouble();
        System.out.println("Avec nextDouble() : " + valeur);
        input.close();
    }
}

Sortie

Entrez une valeur double : 33.33
Avec nextDouble() : 33.33

Exemple 4 : Utilisation de next()

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Entrez votre nom : ");
        String valeur = input.next();
        System.out.println("Avec next() : " + valeur);
        input.close();
    }
}

Sortie

Entrez votre nom : Jonny Walker
Avec next() : Jonny

next() s'arrête au premier espace, capturant seulement le prénom.


Exemple 5 : Utilisation de nextLine()

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Entrez votre nom : ");
        String valeur = input.nextLine();
        System.out.println("Avec nextLine() : " + valeur);
        input.close();
    }
}

Sortie

Entrez votre nom : Jonny Walker
Avec nextLine() : Jonny Walker

Contrairement à next(), nextLine() capture la ligne entière, espaces inclus, jusqu'au saut de ligne.

Lecture recommandée : Problème Scanner nextLine() ignoré


Scanner avec BigInteger et BigDecimal

Pour les nombres de haute précision, Scanner supporte :

Exemple : Lecture de BigInteger et BigDecimal

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Entrez un grand entier : ");
        BigInteger val1 = input.nextBigInteger();
        System.out.println("Avec nextBigInteger() : " + val1);
        System.out.print("Entrez un grand décimal : ");
        BigDecimal val2 = input.nextBigDecimal();
        System.out.println("Avec nextBigDecimal() : " + val2);
        input.close();
    }
}

Sortie

Entrez un grand entier : 987654321
Avec nextBigInteger() : 987654321
Entrez un grand décimal : 9.55555
Avec nextBigDecimal() : 9.55555

Fonctionnement interne de Scanner

Scanner lit une ligne entière, puis la divise en jetons (tokens) en utilisant les espaces blancs par défaut. Chaque jeton est récupéré avec la méthode appropriée. Pour l'entrée Il a 22 ans, les jetons sont Il, a, 22.

Astuce : Les jetons sont séparés par espaces, tabulations ou sauts de ligne, sauf si vous personnalisez le délimiteur.

Java

  1. Comprendre le mot-clé final en Java : variables, méthodes et classes
  2. L'opérateur instanceof en Java : guide complet
  3. Comprendre les classes imbriquées statiques en Java : utilisation, différences et exemples
  4. Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
  5. Le pattern Singleton en Java expliqué : implémentation et utilisation sûre
  6. Maîtriser la réflexion Java : inspection des classes, méthodes et champs à l'exécution
  7. Maîtriser Java ObjectOutputStream : Sérialisation, méthodes et exemples pratiques
  8. Maîtriser Java Scanner : Guide complet avec exemples pratiques
  9. Maîtriser les génériques Java : Construire du code réutilisable et type-safe