0Pricing
Java Academy · Lezione

Alternativa con BufferedReader

Lettura più rapida dalla console

Alternativa con BufferedReader è una lezione Java Academy gratuita su CoddyKit. Questa è la lezione 4 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.

Un lettore più veloce

Scanner è pratico, ma relativamente lento per input di grandi dimensioni. Per leggere grandi quantità di dati, BufferedReader di java.io è molto più veloce, perché legge grandi blocchi alla volta.

Creare un BufferedReader

Inserisca un InputStreamReader che avvolge System.in all'interno di un BufferedReader. Qui utilizziamo un StringReader per consentire l'esecuzione degli esempi senza input digitato.

import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new StringReader("Hello"));
        System.out.println(reader.readLine());
        reader.close();
    }
}

readLine restituisce una String

readLine() legge un'intera riga come String, senza il terminatore di riga. A differenza di Scanner, restituisce sempre testo, quindi deve analizzare personalmente i numeri.

import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new StringReader("first\nsecond"));
        System.out.println(reader.readLine());
        System.out.println(reader.readLine());
        reader.close();
    }
}

La fine dell'input è null

Quando non è presente altro input, readLine() restituisce null. Questo indica che è il momento di terminare la lettura.

import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new StringReader("one line"));
        System.out.println(reader.readLine());
        System.out.println(reader.readLine());
        reader.close();
    }
}

Leggere tutte le righe

Ripeta l'operazione mentre readLine() non è null, per elaborare ogni riga dell'input.

import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new StringReader("a\nb\nc"));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println("> " + line);
        }
        reader.close();
    }
}

Analizzare personalmente i numeri

Poiché readLine restituisce testo, lo converta con Integer.parseInt quando ha bisogno di un numero.

import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new StringReader("42"));
        int n = Integer.parseInt(reader.readLine().trim());
        System.out.println(n * 2);
        reader.close();
    }
}

Dividere una riga in token

Per leggere più numeri da una sola riga, divida la riga con split e analizzi ogni parte.

import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new StringReader("10 20 30"));
        String[] parts = reader.readLine().split(" ");
        int sum = 0;
        for (String p : parts) {
            sum += Integer.parseInt(p);
        }
        System.out.println(sum);
        reader.close();
    }
}

Eccezioni controllate

readLine dichiara una IOException controllata, quindi deve dichiarare throws IOException oppure racchiudere la chiamata in un try-catch. Scanner non richiede questo passaggio.

import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        try {
            BufferedReader reader = new BufferedReader(new StringReader("data"));
            System.out.println(reader.readLine());
            reader.close();
        } catch (IOException e) {
            System.out.println("Read error");
        }
    }
}

Try-with-resources

Utilizzi try-with-resources, in modo che il lettore venga chiuso automaticamente anche se si verifica un'eccezione.

import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        try (BufferedReader reader = new BufferedReader(new StringReader("auto-closed"))) {
            System.out.println(reader.readLine());
        }
    }
}

Un esempio reale con System.in

Per l'input reale dalla tastiera, avvolga System.in. Esegua questo codice localmente, digiti una riga e prema Invio.

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("Enter text: ");
        String input = reader.readLine();
        System.out.println("You typed: " + input);
    }
}

Scanner e BufferedReader a confronto

Scelga Scanner per la praticità e la semplice analisi dei numeri. Scelga BufferedReader per la velocità con input di grandi dimensioni, tenendo presente che dovrà analizzare i dati e gestire personalmente IOException.

Verifica rapida

Verifichi le Sue conoscenze su BufferedReader.

Riepilogo

Ha imparato a usare l'alternativa BufferedReader:

  • Avvolga System.in in InputStreamReader e poi in BufferedReader
  • readLine() restituisce un'intera riga oppure null alla fine dell'input
  • Analizzi personalmente i numeri con Integer.parseInt e split
  • Genera una IOException controllata, quindi deve gestirla o dichiararla
  • Lo preferisca a Scanner per input di grandi dimensioni e ad alta intensità di elaborazione

Domande Frequenti

La lezione «Alternativa con BufferedReader» è gratuita?

Sì — il testo completo di «Alternativa con BufferedReader» è 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 «Alternativa con BufferedReader»?

Lettura più rapida dalla console 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 4 di 4.

Quanto tempo richiede la lezione «Alternativa con BufferedReader»?

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.

Tutte le lezioni di questo corso

  1. Lettura dell'input con Scanner
  2. Lettura di numeri e righe
  3. Convalida dell'input dell'utente
  4. Alternativa con BufferedReader
← Torna a Java Academy