Páginas

Cómo usar los métodos next...() de Scanner en Java

Cómo usar los métodos next...() de Scanner en Java

En Java, la clase Scanner permite leer datos desde la entrada estándar (teclado) o desde otras fuentes. Para obtener los valores se utilizan los métodos next...(), cada uno especializado en un tipo de dato.

Crear el Scanner

import java.util.Scanner;
Scanner sc = new Scanner(System.in);

Principales métodos next...()

  • next(): lee una palabra (token) hasta un espacio en blanco.
  • nextLine(): lee una línea completa, incluyendo espacios, hasta que el usuario presiona Enter.
  • nextInt(): lee un número entero (int).
  • nextDouble(): lee un número decimal (double).
  • nextFloat(): lee un número decimal de tipo float.
  • nextLong(): lee un número entero grande de tipo long.
  • nextBoolean(): lee un valor lógico (true o false).

Ejemplos básicos

Leer diferentes tipos de datos

System.out.print("Escribe un número entero: ");
int entero = sc.nextInt();

System.out.print("Escribe un número decimal: ");
double decimal = sc.nextDouble();

System.out.print("Escribe una palabra: ");
String palabra = sc.next();

System.out.print("Escribe una línea completa: ");
sc.nextLine(); // limpiar buffer si antes se usó nextInt o nextDouble
String linea = sc.nextLine();

System.out.println("Entero: " + entero);
System.out.println("Decimal: " + decimal);
System.out.println("Palabra: " + palabra);
System.out.println("Línea: " + linea);

Ejemplo con nextBoolean()

System.out.print("¿Eres estudiante? (true/false): ");
boolean estudiante = sc.nextBoolean();
System.out.println("Respuesta: " + estudiante);

Diferencia entre next() y nextLine()

next() solo devuelve la primera palabra hasta el espacio en blanco, mientras que nextLine() devuelve todo el texto de la línea.

System.out.print("Escribe tu nombre completo: ");
String nombre1 = sc.next();      // solo toma la primera palabra
System.out.println("Con next(): " + nombre1);

sc.nextLine(); // limpiar buffer
System.out.print("Escribe tu nombre completo: ");
String nombre2 = sc.nextLine();  // toma toda la línea
System.out.println("Con nextLine(): " + nombre2);

Buenas prácticas

  • Usar el método next...() correspondiente al tipo de dato esperado.
  • Cuando combines lectura de números con lectura de texto, usa sc.nextLine() para limpiar el buffer antes de leer cadenas completas.
  • Verifica con hasNext...() si quieres validar antes de leer.
  • Cierra el scanner con sc.close(); al finalizar el programa.