DEV Community

Erick Vasquez
Erick Vasquez

Posted on

Scanner vs BufferedReader

Comparación de Características

Característica Scanner BufferedReader
Facilidad de uso Más simple y directo para leer distintos tipos de datos (nextInt(), nextLine(), etc.) Solo lee texto como String, se necesita Integer.parseInt() para números.
Velocidad Más lento Más rápido, especialmente con muchos datos.
Parsers incluidos Sí, métodos como nextInt(), nextDouble(), etc. No, debes convertir manualmente (Integer.parseInt()).
Lectura de líneas Con nextLine() Con readLine()
Uso con consola Ideal para programas interactivos Menos cómodo, requiere más código.
Sincronización No sincronizado Sincronizado (thread-safe).

Ejemplo Comparativo

Con Scanner

import java.util.Scanner;

public class ScannerExample {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Enter your name: ");
        String name = sc.nextLine();
        System.out.print("Enter your age: ");
        int age = sc.nextInt();
        System.out.println("Hello " + name + ", age " + age);
    }
}
Enter fullscreen mode Exit fullscreen mode

Con BufferedReader

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class BufferedReaderExample {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Enter your name: ");
        String name = br.readLine();
        System.out.print("Enter your age: ");
        int age = Integer.parseInt(br.readLine());
        System.out.println("Hello " + name + ", age " + age);
    }
}
Enter fullscreen mode Exit fullscreen mode

¿Cuál deberías usar?

Usa Scanner si:

  • Estás haciendo prácticas de algoritmos en consola.
  • En programas donde la facilidad de lectura es más importante que la velocidad.

Usa BufferedReader si:

  • Necesitas máximo rendimiento (por ejemplo, al leer grandes cantidades de datos).
  • Estás haciendo parsing de archivos grandes o input de alta velocidad en línea.

Top comments (0)