Este equipo de trabajo ha estado horas investigando la resolución a tus dudas, te compartimos la soluciones así que deseamos resultarte de gran ayuda.
Solución:
Siempre prefiero leer la entrada usando nextLine()
y luego analizar el string.
Utilizando next()
solo devolverá lo que viene antes del delimitador (predeterminado en espacios en blanco). nextLine()
automáticamente mueve el escáner hacia abajo después de regresar a la línea actual.
Una herramienta útil para analizar datos de nextLine()
sería str.split("\s+")
.
String data = scanner.nextLine();
String[] pieces = data.split("\s+");
// Parse the pieces
Para obtener más información sobre la clase Scanner o la clase String, consulte los siguientes enlaces.
Escáner: http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html
Cadena: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html
next()
puede leer la entrada solo hasta el espacio. No puede leer dos palabras separadas por un espacio. También, next()
coloca el cursor en la misma línea después de leer la entrada.
nextLine()
lee la entrada, incluido el espacio entre las palabras (es decir, lee hasta el final de la línea) n
). Una vez que se lee la entrada, nextLine()
coloca el cursor en la línea siguiente.
Para leer toda la línea puedes usar nextLine()
.
De JavaDoc:
- A
Scanner
divide su entrada en tokens usando un patrón delimitador, que por defecto coincide con los espacios en blanco.next()
: busca y devuelve el siguiente token completo de este escáner.nextLine()
: Avanza este escáner más allá de la línea actual y devuelve la entrada que se omitió.
Así que en caso de "small example
next()
debe volver “pequeño” y nextLine()
debe devolver “pequeño ejemplo”
Puntuaciones y reseñas
Recuerda algo, que te concedemos agregar una reseña si te fue de ayuda.