English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Guida di base Java

Java Controllo dei flussi

Java Array

Java Orientato agli oggetti (I)

Java Orientato agli oggetti (II)

Java Orientato agli oggetti (III)

Gestione delle eccezioni Java

Java List

Java Queue (coda)

Java Map collection

Java Set collection

Java Input/Output (I/O)

Java Reader/Writer

Altri argomenti Java

Classe Scanner Java

In questo tutorial, impareremo Java Scanner e i suoi metodi con esempi.

La classe PrintWriter del pacchetto java.io può essere utilizzata per scrivere dati di output in un formato di lettura comune (testo).

La classe Scanner del pacchetto java.util viene utilizzata per leggere dati di input da diverse sorgenti (ad esempio input stream, utenti, file, ecc.). Facciamo un esempio.

Esempio 1: Leggi una riga di testo utilizzando lo scanner

import java.util.Scanner;
class Main {
    public static void main(String[] args) {
        // Crea un oggetto Scanner
        Scanner input = new Scanner(System.in);
        System.out.print("Inserisci il nome: ");
        // Ricevi l'input dalla tastiera
        String name = input.nextLine();
        // Stampa l'output del nome
        System.out.println("Il mio nome è " + name);
        // Chiude lo scanner
        input.close();
    }
}

Risultato di output

Inserisci il nome: Jack
Il mio nome è  Jack

Nell'esempio sopra, presta attenzione alle seguenti righe

Scanner input = new Scanner(System.in);

Qui, abbiamo creato un oggetto Scanner chiamato input.

Il parametro System.in viene utilizzato per ottenere l'input dal input standard. È come ottenere l'input dalla tastiera.

Poi, utilizziamo il metodo nextLine() della classe Scanner per leggere una riga di testo dall'utente.

Ora che hai un po' di conoscenze su Scanner, esploriamolo ulteriormente.

Importare la classe scanner

Dallo esempio sopra, si può vedere che dobbiamo prima importare il pacchetto java.util.Scanner, quindi possiamo utilizzare la classe Scanner.

import java.util.Scanner;

Creare un oggetto scanner in Java

Come descritto sopra, dopo aver importato il pacchetto, è possibile creare un oggetto Scanner.

// Leggi l'input dal flusso di input
Scanner sc1 = new Scanner(InputStream input);
// Leggi l'input dal file
Scanner sc2 = new Scanner(File file);
// Leggi l'input dalla stringa
Scanner sc3 = new Scanner(String str);

Qui creiamo un oggetto della classe Scanner, che leggerà rispettivamenteInputStream, lettura di input da file e stringhe.

Metodi di input dello scanner Java

La classe Scanner fornisce vari metodi che ci permettono di leggere diversi tipi di input.

MetodoDescrizione
nextInt()Leggi un valore int dall'utente
nextFloat()Leggi un valore float dall'utente
nextBoolean()Leggi un valore booleano dall'utente
nextLine()Leggi una riga di testo dall'utente
next()Leggi una parola dall'utente
nextByte()Leggi un valore byte dall'utente
nextDouble()Leggi un valore double dall'utente
nextShort()Leggi un valore short dall'utente
nextLong()Leggi un valore long dall'utente

Esempio 2: nextInt() dello scanner Java

import java.util.Scanner;
class Main {
    public static void main(String[] args) {
        //Crea un oggetto scanner
        Scanner input = new Scanner(System.in);
        System.out.println("Inserisci un numero intero: ");
        //Leggi un valore int
        int data1 = input.nextInt();
        System.out.println("Using nextInt(): " + data1);
        input.close();
    }
}

Risultato di output

Inserisci un numero intero:
22
Using nextInt(): 22

Nell'esempio precedente, abbiamo utilizzato il metodo nextInt() per leggere un valore intero.

Esempio 3: Metodo nextDouble() dello scanner Java

import java.util.Scanner;
class Main {
   public static void main(String[] args) {
      //Creazione di un oggetto Scanner
      Scanner input = new Scanner(System.in);
      System.out.print("Inserisci un valore a virgola mobile: ");
      //Leggi un valore a virgola mobile
      double value = input.nextDouble();
      System.out.println("Using nextDouble(): " + value);
      input.close();
   }
}

Risultato di output

Inserisci un valore a virgola mobile: 33.33
Using nextDouble(): 33.33

Nell'esempio precedente, abbiamo utilizzato il metodo nextDouble() per leggere un valore a virgola mobile.

Esempio 4: Metodo next() dello scanner Java

import java.util.Scanner;
class Main {
   public static void main(String[] args) {
      //Creazione di un oggetto Scanner
      Scanner input = new Scanner(System.in);
      System.out.print("Inserisci il tuo nome: ");
      //Leggi l'intero termine
      String value = input.next();
      System.out.println("Using next(): " + value);
      input.close();
   }
}

Risultato di output

Inserisci il tuo nome: Jonny Walker
Using next(): Jonny

Nell'esempio precedente, abbiamo utilizzato il metodo next() per leggere una stringa dall'utente.

Qui forniamo il nome completo. Tuttavia, il metodo next() legge solo il nome.

Questo è perché il metodo next() legge l'inputspaziocaratteri. Una volta raggiunto uno spazio, restituisce una stringa (esclusi gli spazi).

Esempio 5: Metodo nextLine() del scanner Java

import java.util.Scanner;
class Main {
   public static void main(String[] args) {
      //Creazione di un oggetto Scanner
      Scanner input = new Scanner(System.in);
      System.out.print("Inserisci il tuo nome: ");
      //Lettura di una riga intera
      String value = input.nextLine();
      System.out.println("Using nextLine(): " + value);
      input.close();
   }
}

Risultato di output

Inserisci il tuo nome: Jonny Walker
Using nextLine(): Jonny Walker

Nel primo esempio, abbiamo utilizzato il metodo nextLine() per leggere una stringa dall'utente.

Diversamente da next(), il metodo nextLine() legge l'intera riga di input inclusi gli spazi. Il metodo termina quando incontra il carattere di nuova riga \n.

Scanner Java BigInteger e BigDecimal

Il programma di scansione Java può essere utilizzato per leggere numeri interi e decimali grandi.

  • nextBigInteger() - Lettura del valore intero grande dall'utente

  • nextBigDecimal() - Lettura del valore decimale grande dall'utente

Esempio 4: Lettura di BigInteger e BigDecimal

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;
class Main {
   public static void main(String[] args) {
      //Creazione di un oggetto Scanner
      Scanner input = new Scanner(System.in);
      System.out.print("Inserisci un numero intero grande: ");
      //Lettura del numero intero grande
      BigInteger value1 = input.nextBigInteger();
      System.out.println("Sto utilizzando nextBigInteger(): " + value1);
      System.out.print("Inserisci un numero decimale grande: ");
      //Lettura del numero decimale grande
      BigDecimal value2 = input.nextBigDecimal();
      System.out.println("Sto utilizzando nextBigDecimal(): " + value2);
      input.close();
   }
}

Risultato di output

Inserisci un grande intero: 987654321
Utilizzando nextBigInteger(): 987654321
Inserisci un grande decimale: 9.55555
Utilizzando nextBigDecimal(): 9.55555

Nell'esempio sopra, abbiamo utilizzato i pacchetti java.math.BigInteger e java.math.BigDecimal per leggere BigInteger e BigDecimal rispettivamente.

Come funziona lo scanner Java

La classe scanner legge l'intera riga e la suddivide in token. I token sono elementi piccoli che hanno un significato per il compilatore Java. Ad esempio

Supponiamo di avere una stringa di input:

He è 22

In questo caso, l'oggetto scanner legge l'intera riga e divide la stringa in token: “ He ”,“ is ”e” 22 ”。Poi, l'oggetto esplora ogni token utilizzando i suoi diversi metodi per leggere ogni token.

Attenzione:Di default, gli spazi vengono utilizzati per delimitare i segni di marca.