Lettura da tastiera
DOMANDA:
Come posso leggere un input da tastiera in Java?
RISPOSTA:
In Java esistono diversi modi per leggere da standard input (la nostra cara tastiera).
Partiamo dal più generico (e più complesso) BufferedReader:
package letturatastiera;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class LetturaDaTastiera {
public static void main(String[] args) throws IOException {
InputStreamReader is = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(is);
System.out.println("Inserire una stringa:");
String letta = br.readLine();
System.out.println("Stringa letta: " +letta);
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class LetturaDaTastiera {
public static void main(String[] args) throws IOException {
InputStreamReader is = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(is);
System.out.println("Inserire una stringa:");
String letta = br.readLine();
System.out.println("Stringa letta: " +letta);
}
}
Vi chiederete: "mamma mia, tutto questo per leggere una riga da tastiera?". Bella domanda, però c'è una motivazione: con questo codice possiamo gestire qualunque tipo di input, non solo quello da tastiera (quindi File, stream di dati dalla rete, ecc, ecc...).
Ovviamente non potevano mancare metodologie più compatte e rapide per un linguaggio come Java. Vediamo allora qualche alternativa:
Scanner:
package letturatastiera;
import java.util.Scanner;
public class LetturaScanner {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Inserisci una stringa:");
String letta = sc.next();
System.out.println("Ho letto: " + letta);
}
}
import java.util.Scanner;
public class LetturaScanner {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Inserisci una stringa:");
String letta = sc.next();
System.out.println("Ho letto: " + letta);
}
}
Da notare che per leggere un altro tipo di dato, ad esempio un intero, avremmo dovuto scrivere:
String letta = sc.nextInt();
JOptionPane:
package letturatastiera;
import javax.swing.JOptionPane;
public class LetturaJOptionPane {
public static void main(String[] args) {
String letta =
JOptionPane.showInputDialog("Inserisci una stringa:");
System.out.println("Ho letto: " + letta);
}
}
import javax.swing.JOptionPane;
public class LetturaJOptionPane {
public static void main(String[] args) {
String letta =
JOptionPane.showInputDialog("Inserisci una stringa:");
System.out.println("Ho letto: " + letta);
}
}
In questo caso avremmo potuto mostrare la stringa letta in un JOptionPane, invece che sullo standard output, semplicemente con:
JOptionPane.showMessageDialog(null, letta);
In tutti e tre i casi possiamo convertire la stringa letta in un intero (o altri formati), utilizzando le classi di parsing di Java:
int numeroLetto = Integer.parseInt(letta);
Potresti fare un post dove spieghi come usare la libreria keypressed?
RispondiElimina