¿Cuál es la diferencia entre los métodos next() y nextLine() de la clase Scanner?
¿ Cuál es la principal diferencia entre next()
y nextLine()
?
Mi objetivo principal es leer todo el texto utilizando un archivo Scanner
que pueda estar "conectado" a cualquier fuente (archivo, por ejemplo).
¿Cuál debería elegir y por qué?
Siempre prefiero leer la entrada usando nextLine()
y luego analizar la cadena.
El uso next()
solo devolverá lo que viene antes del delimitador (el valor predeterminado es espacio en blanco). nextLine()
mueve automáticamente el escáner hacia abajo después de devolver la línea actual.
Una herramienta útil para analizar datos 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. Además, next()
coloca el cursor en la misma línea después de leer la entrada.
nextLine()
lee la entrada incluyendo el espacio entre las palabras (es decir, lee hasta el final de la línea \n
). Una vez leída la entrada, nextLine()
posiciona el cursor en la siguiente línea.
Para leer la línea completa puedes usar nextLine()
.