English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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.
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;
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.
La classe Scanner fornisce vari metodi che ci permettono di leggere diversi tipi di input.
Metodo | Descrizione |
---|---|
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 |
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.
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.
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).
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.
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
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.
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.