- Comprendere il concetto di input nei programmi
- Utilizzare la classe Scanner per acquisire dati da tastiera
- Gestire diversi tipi di dato in ingresso
- Individuare e correggere errori comuni nell'input
- Sviluppare programmi interattivi in ambiente console
Introduzione alla gestione dell'input con Scanner
Un programma efficace non si limita a eseguire istruzioni statiche, ma interagisce con l'utente acquisendo dati in ingresso. In Java, questo avviene principalmente tramite la classe Scanner, uno strumento semplice e potente per leggere input da tastiera.
Importazione e creazione dello Scanner
Per utilizzare Scanner è necessario importare il package java.util e creare un oggetto collegato allo standard input.
import java.util.Scanner;
Scanner input = new Scanner(System.in);
Tipi di dati leggibili
| Metodo | Tipo | Esempio |
|---|---|---|
| nextInt() | Intero | int x = input.nextInt(); |
| nextDouble() | Decimale | double d = input.nextDouble(); |
| next() | Stringa singola | String s = input.next(); |
| nextLine() | Stringa completa | String s = input.nextLine(); |
Differenza tra next() e nextLine()
- next() legge solo fino al primo spazio
- nextLine() legge tutta la riga
Problema del buffer
Dopo l'uso di nextInt(), il carattere di invio rimane nel buffer e può causare comportamenti inattesi.
int eta = input.nextInt();
input.nextLine(); // pulizia buffer
String nome = input.nextLine();
Validazione dell'input
Per evitare errori è possibile verificare il tipo di dato inserito:
if(input.hasNextInt()){
int numero = input.nextInt();
} else {
System.out.println("Valore non valido");
}
Struttura di un programma interattivo
- Richiesta input
- Lettura dati
- Elaborazione
- Output
Questo schema è alla base di molte applicazioni reali come form, login e sistemi di gestione dati.
LABORATORIO
Gestione input con Scanner
Sviluppo guidato di un programma interattivo completo
- Browser
- onlinegdb.com
1 Creazione del progetto
Accedere a onlinegdb.com, selezionare Java e creare un nuovo programma.
2 Inserimento del codice base
Scrivere il seguente programma:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Inserisci il nome: ");
String nome = input.nextLine();
System.out.print("Inserisci l'età: ");
int eta = input.nextInt();
System.out.println("Ciao " + nome + ", hai " + eta + " anni.");
input.close();
}
}
3 Estensione del programma
Modificare il codice aggiungendo:
- Inserimento del cognome
- Inserimento della città
- Messaggio finale più dettagliato
4 Gestione errori
Aggiungere un controllo per verificare che l'età sia un numero valido.
if(input.hasNextInt()){
int eta = input.nextInt();
} else {
System.out.println("Errore: inserire un numero");
}
5 Esercizio di realtà
- Simulare una registrazione utente
- Richiedere nome, età, città
- Stampare un riepilogo strutturato
--- PROFILO ---
Nome: Mario Rossi
Età: 20
Città: Roma