0Pricing
Java Academy · Lección

Lectura de líneas

readLine y bucles

Lectura de líneas es una lección gratuita de Java Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Java Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Java Academy incluye 4 lecciones en total.

El método readLine

readLine() es el núcleo de BufferedReader. Lee caracteres hasta encontrar un salto de línea (Enter) y después devuelve la línea como un String.

El texto devuelto no incluye el carácter de salto de línea. En esta lección leeremos una o varias líneas.

String line = br.readLine();

Lectura de una línea

Este es el caso más sencillo: leer un nombre e imprimir un saludo. readLine() se bloquea (espera) hasta que el usuario pulsa Enter.

Como lee desde System.in, este fragmento se detiene a la espera de la entrada del teclado, por lo que aquí no se puede ejecutar automáticamente.

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 + "!");
    }
}

Qué devuelve readLine al final

Cuando no queda más entrada (fin del flujo o cuando el usuario señala EOF), readLine() devuelve null en lugar de un String.

Esta es una señal fundamental: comprobar si el valor es null indica cuándo debemos dejar de leer.

String line = br.readLine();
if (line == null) {
    System.out.println("No more input.");
}

Lectura hasta EOF

Para leer todas las líneas hasta que termine la entrada, repita el proceso mientras readLine() no sea null. Este patrón habitual asigna el valor y lo comprueba en una sola condición.

Cada iteración le proporciona la siguiente línea, hasta que null detiene el bucle correctamente.

String line;
while ((line = br.readLine()) != null) {
    System.out.println("Got: " + line);
}

Un lector de varias líneas

A continuación se muestra un programa completo que repite cada línea que escriba hasta que termine el flujo.

Lee desde System.in, por lo que espera la entrada y no se puede ejecutar automáticamente, pero el patrón del bucle es exactamente el que reutilizará.

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);
        }
    }
}

Contar líneas

Puede realizar tareas dentro del bucle, como contar. Aquí contamos cuántas líneas se reciben.

Cada iteración lee una línea nueva e incrementa un contador. Cuando termina la entrada, imprimimos el total.

int count = 0;
String line;
while ((line = br.readLine()) != null) {
    count++;
}
System.out.println("Lines read: " + count);

Líneas vacías frente a null

Tenga cuidado: una línea vacía (el usuario simplemente pulsa Enter) devuelve "", un String vacío, y no null.

Por tanto, "".equals(line) indica una línea en blanco, mientras que line == null indica que la entrada ha terminado realmente. Son situaciones diferentes.

if (line == null) {
    // input finished
} else if (line.isEmpty()) {
    // user pressed Enter on a blank line
}

Simular líneas sin stdin

Para ver readLine() en acción sin utilizar el teclado, podemos proporcionar un BufferedReader a partir de un StringReader. El programa se puede ejecutar por completo.

La cadena contiene dos líneas separadas por \n, y el bucle imprime cada una.

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);
        }
    }
}

Recortar espacios en blanco

La entrada suele contener espacios sobrantes. Use trim() para eliminar los espacios en blanco iniciales y finales de una línea antes de utilizarla.

Esto hace que las comparaciones y el análisis sean fiables, especialmente cuando los usuarios añaden espacios accidentalmente.

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 + "]");
    }
}

Leer un número fijo de líneas

A veces conoce de antemano la cantidad de líneas. Un bucle for lee exactamente ese número.

Esto es habitual cuando un problema indica: “el primer número indica cuántas líneas siguen”.

for (int i = 0; i < 3; i++) {
    String item = br.readLine();
    System.out.println(i + ": " + item);
}

Hábitos clave para readLine

Recuerde estos hábitos:

  • Compruebe siempre si el valor es null antes de utilizar una línea.
  • Use trim() cuando los espacios sobrantes puedan causar errores.
  • Una cadena vacía no es lo mismo que null.

A continuación convertiremos estas líneas en números.

Comprobación rápida

¿Qué devuelve readLine() cuando el flujo de entrada ha llegado a su final?

Resumen

Ha aprendido a leer líneas individuales, a repetir con while ((line = br.readLine()) != null) y a distinguir una línea en blanco ("") del final de la entrada (null).

También ha visto ejemplos ejecutables con StringReader. Siguiente tema: convertir líneas de texto en números.

Preguntas frecuentes

¿La lección «Lectura de líneas» es gratis?

Sí — el texto completo de «Lectura de líneas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Java Academy, actualiza a CoddyKit PRO. El curso de Java Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Lectura de líneas»?

readLine y bucles Practicas Java Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Java Academy?

No se requiere experiencia previa. Java Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Lectura de líneas»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Java Academy?

Sí. Cada lección de Java Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Por qué BufferedReader
  2. Lectura de líneas
  3. Análisis de números de la entrada
  4. Cierre seguro de streams
← Volver a Java Academy