Esercitazione 2.2: comprendere I/O in JAVA

L'input è rappresentato dai dati che inviamo al programma dall'esterno. L'invio avviene mediante il canale di ricezione dei dati del programma.

Documentazione oracle Classe Scanner

Come viene letto l'input dalla tastiera?

In java esistono tre modi per leggere l'input:

  • BufferedReader
  • StringTokenizer
  • Scanner

Osserva: la tastiera rappresenta lo standard input dei programmi.
La classe System è una classe del pacchetto base di java ed è una classe statica. Le classi statiche non devono essere istanziate per essere usate. Questo perché lo spazio di allocazione è unico.
Es. System.out.println(“sono io!”); System sis = new System();

L'input è identificato dal flusso in System.in

# Modificatore e tipo Campo Descrizione
1 System err Il flusso di output di errore "standard"
2 System in Il flusso di input "standard"
3 System out Il flusso di output "standard"

Class Scanner

La classe scanner rappresenta il modo più semplice per realizzare un programma java che prende l'input da un canale di caratteri. Questa classe appartiene al package java.util e possiede metodi per individuare e prelevare dal canale di input i tipi primitivi (byte,int,float,double,boolean e char) e le stringhe del linguaggio java.


La classe Scanner appartiene al package java.util quindi per usarla bisognerà inserire all’inizio del programma import java.util.Scanner;

I metodi per leggere i tipi primitivi sono elencati di seguito:


# Classe Metodo Descrizione
1 Scanner nextInt() legge dal canale una sequenza di caratteri fino allo spazio interpretandola come numero intero
2 Scanner nextDouble() legge dal canale una sequenza di caratteri fino allo spazio interpretandola come numero reale
3 Scanner nextBoolean() legge dal canale una sequenza di caratteri fino allo spazio interpretandola come un boolean
4 Scanner nextBoolean() legge dal canale una sequenza di caratteri fino allo spazio interpretandola come un boolean
5 Scanner nextByte() legge dal canale una sequenza pari ad un byte
6 Scanner nextLine() legge dal canale una sequenza di caratteri fino al carattere di nuova riga
6 Scanner next() legge dal canale i caratteri presenti

System.out.println(“sono un intero”+p);

Usiamo questa istruzione in un programma

La classe Scanner ha un metodo close() per chiudere lo scanner aperto. Anche se non chiamiamo esplicitamente il metodo close(), verrà invocata l’interfaccia Closeable, che chiude lo stream nella fase di terminazione del programma in esecuzione.
La chiura esplicita è buona norma e consente di liberare risorse, non più utili e di evitare l'accesso accidentale allo stream ormai in disuso dal programma.

Metodo close() dello scanner Esercitazione

Prompt dei comandi
Esercizio 1

Scrivere un programma Java che richiede e stampa la propria anagrafica (Nome,Cognome,Indirizzo,NumeroCivico,DatadiNascita,CodiceFiscale).

Esercizio 2

Scrivere un programma Java che richiede e stampa i dati di un libro (Titolo,Autore,Editore,Numerodipagine,Prezzo).

Esercizio 3

Scrivere un programma Java che richiede e stampa i dati di un corso (Materia, Argomento1, Argomento2, Argomento3,Docente,Prezzo).