JAVA

Introduzione

Panoramica completa dei diversi metodi di input in Java: Scanner, BufferedReader, Console, JOptionPane e input da file, con laboratorio guidato.

Durata

100 minuti

Software

Java JDK, Browser, onlinegdb.com

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

MetodoFacilitàPrestazioniUso tipico
ScannerAltaMediaDidattica
BufferedReaderMediaAltaApplicazioni performanti
ConsoleMediaAltaSicurezza
JOptionPaneAltaBassaGUI
FileMediaAltaDati persistenti
LABORATORIO

Stesso programma con diversi metodi di input

Confronto pratico tra Scanner, BufferedReader e 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.






Java, Input, Scanner, BufferedReader, Console, JOptionPane, File,