public class SimpleReader
extends java.io.FilterReader
SimpleStream
permette di leggere, in modo
semplice, dati da un flusso di ingresso.
In particolare, un oggetto SimpleStream
consente
la lettura di dati (in formato testuale) corrispondenti
ai vari tipi primitivi di Java.
Sono inoltre fornite funzionalità che permettono di verificare
se la scansione è giunta alla fina della riga o del flusso
di ingresso.
Solitamente, un SimpleStream
viene creato senza
specificare argomenti, e questo corrisponde a fargli accedere i
dati dal flusso standard di ingresso System.in
(cioè, dalla tastiera).
E' possibile anche creare un SimpleStream
che accede
i dati di un altro flusso di ingresso pre-esistente,
ad esempio corrispondente a una stringa, un file di testo
o al contenuto di una pagina Web.
(Si veda in proposito la documentazione associata ai costruttori.)
Constructor and Description |
---|
SimpleReader()
Crea un
SimpleReader corrispondente al
flusso standard di ingresso, System.in
(cioè la tastiera). |
SimpleReader(java.io.Reader in)
Crea un
SimpleReader corrispondente al
flusso ingresso pre-esistente in . |
SimpleReader(java.lang.String s)
Crea un
SimpleReader per leggere
dalla stringa s . |
Modifier and Type | Method and Description |
---|---|
boolean |
eof()
Verifica se è stata raggiunta la fine del flusso.
|
boolean |
eoln()
Verifica se è stata raggiunta la fine della linea corrente.
|
boolean |
readBoolean()
Legge un
boolean (delimitato da spazi). |
char |
readChar()
Legge un singolo carattere.
|
double |
readDouble()
Legge un numero razionale (delimitato da spazi).
|
float |
readFloat()
Legge un numero razionale (delimitato da spazi).
|
int |
readInt()
Legge un intero (delimitato da spazi).
|
java.lang.String |
readLine()
Legge una linea di testo.
|
void |
readln()
Consuma il resto della linea corrente, compresi i
caratteri di terminazione di linea.
|
long |
readLong()
Legge un intero (delimitato da spazi).
|
short |
readShort()
Legge un intero (delimitato da spazi).
|
java.lang.String |
readString()
Legge una parola senza spazi al suo interno.
|
public SimpleReader()
SimpleReader
corrispondente al
flusso standard di ingresso, System.in
(cioè la tastiera).public SimpleReader(java.lang.String s)
SimpleReader
per leggere
dalla stringa s
.
Esempio: Lettura e somma di due numeri interi:
SimpleReader in = new SimpleReader("2 3"); int a, b, somma; a = in.readInt(); b = in.readInt(); somma = a+b;
La stringa s
viene eventualmente
estesa con un terminatore di linea.
(Ovvero, viene garantito che la stringa da cui verrà
effettuata la lettura termini con un terminatore di linea.
Questo risolve alcuni problemi riscontrati in pratica.)
public SimpleReader(java.io.Reader in)
SimpleReader
corrispondente al
flusso ingresso pre-esistente in
.
Il flusso di ingresso pre-esistente può essere, ad esempio, un file di testo oppure una pagina Web. Nei due casi in esempio, si possono usare rispettivamente le seguenti seguenze di istruzioni:
Lettura da un file di testo:
// import java.io.*; // legge dal file "nomefile" try { SimpleReader fileIn = new SimpleReader(new FileReader("nomefile")); ... scansione del file di testo ... } catch (FileNotFoundException e) { e.printStackTrace(System.out); System.exit(-1); }
Lettura da una pagina Web:
// import java.io.*; // import java.net.*; // legge dalla pagina di URL "url" try { URL u = new URL("url"); URLConnection uc = u.openConnection(); InputStream is = uc.getInputStream(); Reader r = new BufferedReader(new InputStreamReader(is)); SimpleReader netIn = new SimpleReader(r); ... scansione della pagina Web ... } catch (IOException e) { e.printStackTrace(System.out); System.exit(-1); }
in
- Il flusso di ingresso pre-esistente.public java.lang.String readString()
Ignorando gli eventuali spazi bianchi iniziali, legge una parola composta da una sequenza non vuota di caratteri che con comprende spazi bianchi e la restituisce come stringa. Una parola è quindi una sequenza di caratteri stampabili (non bianchi), delimitata da spazi e/o dalla fine della linea (o del flusso). Tutti i caratteri che precedono il primo carattere stampabile sono considerati spazi bianchi, e quindi ignorati perché considerati non appartenenti alla parola. La parola si considera terminata dal primo spazio bianco o terminazione di linea (o del flusso) che segue il primo carattere stampabile. Il carattere che termina la parola (spazio bianco o carattere di fine linea) viene considerato scandito.
Se si vuole leggere una stringa disposta su una
linea di testo, restituendo anche eventuali spazi iniziali, interi
e finali della linea di testo, è necessario usare il metodo
String readLine()
.
public char readChar()
Gli eventuali caratteri di fine linea vengono ignorati.
public long readLong()
Il numerale deve essere espresso in base 10, e può iniziare con un segno negativo. Tutti i caratteri che precedono il primo carattere stampabile sono considerati spazi bianchi, e non appartengono al numerale. Il numerale si considera terminato dal primo spazio bianco o terminazione di linea (o del flusso) che segue il primo carattere stampabile del numerale. Il carattere che termina il numerale (spazio bianco o carattere di fine linea) si considera scandito.
long
letto.public int readInt()
Il numerale deve essere espresso in base 10, e può iniziare con un segno negativo. Tutti i caratteri che precedono il primo carattere stampabile sono considerati spazi bianchi, e non appartengono al numerale. Il numerale si considera terminato dal primo spazio bianco o terminazione di linea (o del flusso) che segue il primo carattere stampabile del numerale. Il carattere che termina il numerale (spazio bianco o carattere di fine linea) si considera scandito.
int
letto.public short readShort()
Il numerale deve essere espresso in base 10, e può iniziare con un segno negativo. Tutti i caratteri che precedono il primo carattere stampabile sono considerati spazi bianchi, e non appartengono al numerale. Il numerale si considera terminato dal primo spazio bianco o terminazione di linea (o del flusso) che segue il primo carattere stampabile del numerale. Il carattere che termina il numerale (spazio bianco o carattere di fine linea) si considera scandito.
short
letto.public float readFloat()
Il numerale deve essere espresso in base 10, e può iniziare con un segno negativo. Tutti i caratteri che precedono il primo carattere stampabile sono considerati spazi bianchi, e non appartengono al numerale. Il numerale si considera terminato dal primo spazio bianco o terminazione di linea (o del flusso) che segue il primo carattere stampabile del numerale. Il carattere che termina il numerale (spazio bianco o carattere di fine linea) si considera scandito.
float
letto.public double readDouble()
Il numerale deve essere espresso in base 10, e può iniziare con un segno negativo. Tutti i caratteri che precedono il primo carattere stampabile sono considerati spazi bianchi, e non appartengono al numerale. Il numerale si considera terminato dal primo spazio bianco o terminazione di linea (o del flusso) che segue il primo carattere stampabile del numerale. Il carattere che termina il numerale (spazio bianco o carattere di fine linea) si considera scandito.
double
letto.public boolean readBoolean()
boolean
(delimitato da spazi).
I letterali boolean
sono della
forma true
oppure false
.
Altri letterali sono interpretati come false
.
Tutti i caratteri che precedono il primo carattere stampabile sono considerati spazi bianchi, e non appartengono al letterale. Il letterale si considera terminato dal primo spazio bianco o terminazione di linea (o del flusso) che segue il primo carattere stampabile del numerale. Il carattere che termina il letterale (spazio bianco o carattere di fine linea) si considera scandito.
boolean
letto.public java.lang.String readLine()
La stringa restituita non comprende i caratteri di terminazione della linea.
public void readln()
public boolean eof()
true
se è stata raggiunta la fine
del flusso,
false
altrimenti.public boolean eoln()
La linea si considera terminata quando viene scandita una delle sequenti sequenze di caratteri: '\r', '\n', oppure '\r' seguito da '\n', oppure quando viene raggiunta la fine del flusso.
true
se è stata raggiunta la fine
della linea corrente,
false
altrimenti.