java - El escáner no ve después del espacio
java.util.scanner (6)
Estoy escribiendo un programa que pregunta por el nombre completo de la persona y luego toma esa información y la revierte (es decir, John Doe - Doe, John). Empecé tratando de obtener solo la entrada, pero solo obtengo el primer nombre.
Aquí está mi código:
public static void processName(Scanner scanner) {
System.out.print("Please enter your full name: ");
String name = scanner.next();
System.out.print(name);
}
Cambiar a String name = scanner.nextLine();
en lugar de String name = scanner.next();
Ver más en la documentación aquí - next() y nextLine()
De la documentación del Scanner
:
Un
Scanner
divide su entrada en tokens usando un patrón de delimitador, que por defecto coincide con el espacio en blanco.
y
public String next()
Encuentra y devuelve el siguiente token completo de este escáner. Un token completo va precedido y seguido de una entrada que coincide con el patrón del delimitador.
Esto significa que por defecto el patrón del delimitador es "espacio en blanco". Esto divide tu texto en el espacio. Use nextLine()
para obtener toda la línea.
Intenta reemplazar tu código
String name = scanner.nextLine();
en lugar
String name = scanner.next();
next()
puede leer la entrada solo hasta el space
. No puede leer dos palabras separadas por space
. Además, next()
coloca el cursor en la misma línea después de leer la entrada.
nextLine()
lee la entrada, incluido el space
entre las palabras (es decir, lee hasta el final de la línea /n
). Una vez que se lee la entrada, nextLine()
posiciona el cursor en la siguiente línea.
intenta usar esto
String name = scanner.nextLine();
scanner.next();
toma solo la siguiente palabra. scanner.nextLine();
Deberia trabajar. Espero que esto ayude
public static void processName(Scanner scanner) {
System.out.print("Please enter your full name: ");
scanner.nextLine();
String name = scanner.nextLine();
System.out.print(name);
}
Pruebe el código anterior El escáner debería poder leer el espacio y pasar a la siguiente referencia de la cadena