¿Cuál es la diferencia entre los métodos next() y nextLine() de la clase Scanner?

Resuelto AnnieOK asked hace 10 años • 15 respuestas

¿ Cuál es la principal diferencia entre next()y nextLine()?
Mi objetivo principal es leer todo el texto utilizando un archivo Scannerque pueda estar "conectado" a cualquier fuente (archivo, por ejemplo).

¿Cuál debería elegir y por qué?

AnnieOK avatar Mar 17 '14 22:03 AnnieOK
Aceptado

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

Tristan avatar Mar 17 '2014 15:03 Tristan

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().

RKC avatar Mar 17 '2014 15:03 RKC