CodeGym /Corsi /JAVA 25 SELF /Input da tastiera

Input da tastiera

JAVA 25 SELF
Livello 2, Lezione 5
Disponibile

1. Lettura dalla console, System.in

Nelle lezioni precedenti abbiamo conosciuto i comandi di output a schermo. Per questo abbiamo usato l’oggetto System.out e i suoi metodi print() e println(). Semplice e comodo.

Ma, come probabilmente immagini, il solo output a schermo non è sufficiente. Lo scopo della maggior parte dei programmi è fare qualcosa di utile per l’utente. Perciò molto spesso è necessario che l’utente possa inserire dati da tastiera.

Come per l’output, anche per l’input esiste un oggetto speciale — System.in. Purtroppo, però, non è così comodo come vorremmo. Questo oggetto consente di leggere i dati da tastiera, ma solo un carattere alla volta.

Per questo utilizzeremo un’altra classe che, in combinazione con l’oggetto System.in, ci darà tutto ciò di cui abbiamo bisogno. In Java esistono da tempo classi per ogni evenienza. E ora conosceremo una di esse.

2. Classe Scanner

La classe Scanner (nome completo java.util.Scanner) sa leggere dati da diverse fonti: console, file, Internet. Se vogliamo che legga i dati da tastiera, dobbiamo passargli l’oggetto System.in come parametro, ovvero come sorgente dei dati. Poi l’oggetto di tipo Scanner saprà da solo cosa farne.

La lettura da tastiera tramite un oggetto di tipo Scanner apparirà all’incirca così:

Codice Spiegazione
Scanner console = new Scanner(System.in);
String name = console.nextLine();
int age = console.nextInt();
Creiamo un oggetto della classe Scanner. Leggiamo da tastiera una riga di testo. Leggiamo da tastiera un numero.

Sembra semplice, ma è davvero tutto così facile?

Immagino che ti siano venute in mente molte domande, e ora risponderemo.

Ma prima mostriamo un esempio di programma completo che utilizza la classe Scanner:

void main()
{
    Scanner console = new Scanner(System.in);
    String name = console.nextLine();
    int age = console.nextInt();

    System.out.println("Name: " + name);
    System.out.println("Age: " + age);
}

3. Creazione di un oggetto Scanner

Prima domanda — che cos’è questa riga Scanner console = new Scanner(System.in);?

Una riga del genere può confondere, tuttavia incontrerai spesso cose simili. Quindi, credo sia ora di spiegare che cosa c’è scritto qui.

Ricordiamo come di solito creiamo una variabile con del testo:


String str = "testo";
Dichiarazione e inizializzazione di una variabile stringa

Per prima cosa scriviamo il tipo della variabile (String), poi il suo nome (str) e, infine, dopo il segno di uguale scriviamo il valore.

Nella nostra strana riga, in realtà, è la stessa cosa:


Scanner console = new Scanner(System.in);
Dichiarazione e inizializzazione di una variabile di tipo Scanner

Tutto ciò che si trova a sinistra del segno di uguale è la dichiarazione di una variabile di tipo Scanner di nome console. Si sarebbe potuta chiamare, ad esempio, s oppure scanner, o anche keyboard. In tal caso il codice apparirebbe così:

Scanner s = new Scanner(System.in);
String name = s.nextLine();
int age = s.nextInt();
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
int age = scanner.nextInt();
Scanner keyboard = new Scanner(System.in);
String name = keyboard.nextLine();
int age = keyboard.nextInt();

Penso che ora sia tutto molto più chiaro.

Il codice che si trova a destra del segno di uguale è un po’ più complesso. Intendo new Scanner(System.in); Ma anche qui non c’è nulla di trascendentale.

In questo codice diciamo alla macchina Java: crea un nuovo oggetto (parola new) di tipo Scanner e passagli come parametro la fonte da cui il nuovo oggetto Scanner leggerà i dati — l’oggetto System.in.

Dopo l’esecuzione di questa riga avremo una variabile di nome console di tipo Scanner, con l’aiuto della quale il nostro programma potrà leggere i dati da tastiera.

4. Chiamata dei metodi

Nell’esempio precedente la nostra variabile console di tipo Scanner conteneva al suo interno un riferimento a un oggetto di tipo Scanner.

Per chiamare i metodi dell’oggetto a cui la variabile fa riferimento, dopo il nome della variabile bisogna scrivere un punto, quindi il nome del metodo e i parametri. La forma generale di questo comando è:


peremennaya.metod(parametry);
Chiamata di un metodo dell’oggetto a cui fa riferimento la variabile

Esempi:

System.out.println("Ciao");
System.out.println(1);

Se non prevedi di passare parametri alla funzione, è necessario scrivere semplicemente le parentesi vuote:


peremennaya.metod();
Chiamata di un metodo senza passare parametri

Esempio:

System.out.println();

5. Input dei dati dalla console

Inserire dati da tastiera, quando abbiamo un oggetto di tipo Scanner, è molto semplice.

Per leggere da tastiera una stringa, serve il comando:


String str = console.nextLine();

Quando il programma arriverà all’esecuzione di questa riga, si sospenderà e attenderà che l’utente inserisca i dati e prema il tasto Enter. Dopodiché tutto ciò che l’utente ha inserito verrà salvato nella variabile str.

Per leggere da tastiera un numero intero, serve il comando:


int number = console.nextInt();

Qui tutto è analogo al comando precedente. Quando il programma arriverà all’esecuzione di questa riga, si sospenderà e attenderà che l’utente inserisca i dati e prema il tasto Enter. Dopodiché tutto ciò che l’utente ha inserito verrà convertito in un numero e salvato nella variabile number.

Se l’utente inserisce dati che non possono essere convertiti in un numero intero, si verificherà un errore nel programma e questo terminerà.

Per leggere da tastiera un numero decimale, serve il comando:

double number = console.nextDouble();

Questo comando è del tutto analogo al comando nextInt(), solo che verifica che i dati inseriti possano essere convertiti in un numero di tipo double.

Esempio di programma che legge da tastiera due numeri e ne stampa la somma:

void main()
{
    Scanner console = new Scanner(System.in);
    int a = console.nextInt();
    int b = console.nextInt();

    System.out.println(a + b);
}

Nota

L’utente può inserire più numeri in un’unica riga, separandoli con spazi: una tale situazione verrà gestita correttamente dai metodi della classe Scanner. Tuttavia, i numeri verranno letti dal programma solo dopo che l’utente avrà premuto Enter.

1
Compito
JAVA 25 SELF, livello 2, lezione 5
Bloccato
Lettura della password 🔒
Lettura della password 🔒
1
Compito
JAVA 25 SELF, livello 2, lezione 5
Bloccato
Registrazione di un nuovo giocatore 🎮
Registrazione di un nuovo giocatore 🎮
1
Compito
JAVA 25 SELF, livello 2, lezione 5
Bloccato
Calcolo del costo totale degli acquisti 🛒
Calcolo del costo totale degli acquisti 🛒
1
Compito
JAVA 25 SELF, livello 2, lezione 5
Bloccato
Creazione del biglietto da visita digitale 📇
Creazione del biglietto da visita digitale 📇
1
Sondaggio/quiz
Introduzione ai tipi int e String, livello 2, lezione 5
Non disponibile
Introduzione ai tipi int e String
Introduzione ai tipi int e String
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION