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 tipofloat.nextLong(): lee un número entero grande de tipolong.nextBoolean(): lee un valor lógico (trueofalse).
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.