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);
   }
}

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);
    }
}


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);
   }
}

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);


Commenti

  1. Potresti fare un post dove spieghi come usare la libreria keypressed?

    RispondiElimina

Posta un commento

Post popolari in questo blog

Arrotondamento e troncamento in Java

Eclipse: Shortcuts (scorciatoie) da tastiera

Strutture dati: List, Set, Map

Creare un eseguibile Java