Lettura delle righe
readLine e cicli
Lettura delle righe è una lezione Java Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Java Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Java Academy include 4 lezioni in totale.
Il metodo readLine
readLine() è il cuore di BufferedReader. Legge i caratteri fino a incontrare un'interruzione di riga (Invio), quindi restituisce la riga come String.
Il testo restituito non include il carattere di nuova riga. In questa lezione leggeremo una o più righe.
String line = br.readLine();Lettura di una riga
Ecco il caso più semplice: leggere un nome e stampare un saluto. readLine() è bloccante, cioè attende che l'utente prema Invio.
Poiché legge da System.in, questo frammento si mette in pausa in attesa dell'input dalla tastiera, quindi qui non può essere eseguito automaticamente.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String name = br.readLine();
System.out.println("Welcome, " + name + "!");
}
}Che cosa restituisce readLine alla fine
Quando non c'è più input (fine del flusso o segnalazione di EOF da parte dell'utente), readLine() restituisce null invece di una String.
Questo è un segnale fondamentale: verificare la presenza di null permette di sapere quando interrompere la lettura.
String line = br.readLine();
if (line == null) {
System.out.println("No more input.");
}Lettura fino a EOF
Per leggere ogni riga fino alla fine dell'input, esegua un ciclo finché readLine() non è null. Questo schema comune assegna il valore e lo verifica in un'unica condizione.
A ogni iterazione si ottiene la riga successiva, finché null non interrompe il ciclo in modo ordinato.
String line;
while ((line = br.readLine()) != null) {
System.out.println("Got: " + line);
}Lettore per più righe
Ecco un programma completo che ripete ogni riga digitata fino alla fine del flusso.
Legge da System.in, quindi attende l'input e non può essere eseguito automaticamente, ma lo schema del ciclo è esattamente quello che riutilizzerà.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line = br.readLine()) != null) {
System.out.println("Echo: " + line);
}
}
}Conteggio delle righe
Può eseguire un'operazione all'interno del ciclo, ad esempio contare le righe. Qui calcoliamo quante righe arrivano.
A ogni iterazione si legge una nuova riga e si incrementa un contatore. Quando l'input termina, viene stampato il totale.
int count = 0;
String line;
while ((line = br.readLine()) != null) {
count++;
}
System.out.println("Lines read: " + count);Righe vuote e null
Faccia attenzione: una riga vuota (l'utente preme semplicemente Invio) restituisce "", una String vuota, e non null.
Quindi "".equals(line) indica una riga vuota, mentre line == null indica che l'input è davvero terminato. Sono due situazioni diverse.
if (line == null) {
// input finished
} else if (line.isEmpty()) {
// user pressed Enter on a blank line
}Simulare righe senza stdin
Per osservare readLine() in azione senza usare la tastiera, possiamo fornire dati a un BufferedReader tramite uno StringReader. Il programma è completamente eseguibile.
La stringa contiene due righe separate da \n e il ciclo le stampa una alla volta.
import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br =
new BufferedReader(new StringReader("apple\nbanana"));
String line;
while ((line = br.readLine()) != null) {
System.out.println("Fruit: " + line);
}
}
}Rimozione degli spazi bianchi
L'input contiene spesso spazi indesiderati. Utilizzi trim() per rimuovere gli spazi bianchi iniziali e finali da una riga prima di utilizzarla.
In questo modo confronti e parsing risultano affidabili, soprattutto quando gli utenti inseriscono accidentalmente degli spazi.
import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br =
new BufferedReader(new StringReader(" hello \n"));
String line = br.readLine().trim();
System.out.println("[" + line + "]");
}
}Lettura di un numero fisso di righe
A volte il numero di righe è noto in anticipo. Un ciclo for legge esattamente quel numero di righe.
È una situazione comune quando un problema specifica: “il primo numero indica quante righe seguono”.
for (int i = 0; i < 3; i++) {
String item = br.readLine();
System.out.println(i + ": " + item);
}Buone pratiche fondamentali per readLine
Ricordi queste buone pratiche:
- Verifichi sempre la presenza di
nullprima di utilizzare una riga. - Utilizzi
trim()quando gli spazi indesiderati potrebbero causare errori. - Una stringa vuota non equivale a
null.
Ora trasformeremo queste righe in numeri.
Verifica rapida
Che cosa restituisce readLine() quando il flusso di input ha raggiunto la fine?
Riepilogo
Ha imparato a leggere singole righe, a eseguire cicli con while ((line = br.readLine()) != null) e a distinguere una riga vuota ("") dalla fine dell'input (null).
Ha anche visto esempi eseguibili che utilizzano StringReader. Prossimo argomento: trasformare le righe di testo in numeri.
Domande Frequenti
La lezione «Lettura delle righe» è gratuita?
Sì — il testo completo di «Lettura delle righe» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Java Academy, passa a CoddyKit PRO. Il corso Java Academy include 4 lezioni in totale.
Cosa imparerò in «Lettura delle righe»?
readLine e cicli Eserciti Java Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Java Academy?
Non è richiesta alcuna esperienza precedente. Java Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Lettura delle righe»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Java Academy?
Sì. Ogni lezione Java Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.