- Conoscere i diversi metodi di input in Java
- Saper scegliere lo strumento più adatto in base al contesto
- Gestire input da tastiera, file e interfacce grafiche
- Comprendere differenze di prestazioni e utilizzo
- Sviluppare applicazioni interattive con diversi approcci
Metodi di input in Java
In Java esistono diversi modi per acquisire dati in ingresso. La scelta dello strumento dipende dal tipo di applicazione: console, grafica o gestione di file.
1. Scanner
Scanner è lo strumento più utilizzato per la gestione dell'input da tastiera.
- Semplice da usare
- Supporta diversi tipi di dato
- Ideale per esercitazioni e programmi base
import java.util.Scanner;
Scanner input = new Scanner(System.in);
int numero = input.nextInt();
2. BufferedReader
BufferedReader è più efficiente e veloce, utilizzato in applicazioni che richiedono prestazioni elevate.
- Maggiore velocità
- Legge solo stringhe
- Richiede conversione dei dati
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String input = reader.readLine();
int numero = Integer.parseInt(input);
3. Console
La classe Console è utilizzata in ambienti professionali per input sicuro.
- Permette input nascosto (password)
- Non sempre disponibile negli ambienti online
Console console = System.console();
String testo = console.readLine();
4. JOptionPane
JOptionPane consente di acquisire input tramite finestre grafiche.
- Adatto per applicazioni GUI
- Interazione utente più intuitiva
import javax.swing.JOptionPane;
String nome = JOptionPane.showInputDialog("Inserisci il nome:");
System.out.println(nome);
5. Input da file
Java consente di leggere dati da file, fondamentale nelle applicazioni reali.
import java.io.File;
import java.util.Scanner;
Scanner fileInput = new Scanner(new File("dati.txt"));
while(fileInput.hasNextLine()){
System.out.println(fileInput.nextLine());
}
Confronto tra i metodi
| Metodo | Facilità | Prestazioni | Uso tipico |
|---|---|---|---|
| Scanner | Alta | Media | Didattica |
| BufferedReader | Media | Alta | Applicazioni performanti |
| Console | Media | Alta | Sicurezza |
| JOptionPane | Alta | Bassa | GUI |
| File | Media | Alta | Dati persistenti |
LABORATORIO
Stesso programma con diversi metodi di input
Confronto pratico tra Scanner, BufferedReader e Console
- Browser
- onlinegdb.com (Scanner e BufferedReader)
- Prompt dei comandi (per Console)
1 Obiettivo
Realizzare lo stesso programma che:
- Chiede nome
- Chiede età
- Stampa un messaggio finale
2 Versione con Scanner
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Nome: ");
String nome = input.nextLine();
System.out.print("Età: ");
int eta = input.nextInt();
System.out.println("Ciao " + nome + ", hai " + eta + " anni.");
input.close();
}
}
3 Versione con BufferedReader
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Nome: ");
String nome = reader.readLine();
System.out.print("Età: ");
int eta = Integer.parseInt(reader.readLine());
System.out.println("Ciao " + nome + ", hai " + eta + " anni.");
}
}
4 Versione con Console
Attenzione: questo codice funziona solo da terminale (prompt dei comandi) e non su onlinegdb.
import java.io.Console;
public class Main {
public static void main(String[] args) {
Console console = System.console();
if (console == null) {
System.out.println("Console non disponibile");
return;
}
String nome = console.readLine("Nome: ");
String etaStr = console.readLine("Età: ");
int eta = Integer.parseInt(etaStr);
System.out.println("Ciao " + nome + ", hai " + eta + " anni.");
}
}
5 Analisi
- Scanner: più semplice e immediato
- BufferedReader: più efficiente ma richiede conversioni
- Console: usato in ambienti reali, non compatibile con ambienti online
6 Esercitazione autonoma
Modificare i programmi aggiungendo:
- Cognome
- Città
- Messaggio finale più dettagliato
Obiettivo: comprendere differenze pratiche e limiti dei diversi metodi.