/ / Java Scanner, tomando la entrada del usuario de la consola en la lista de matriz como palabras separadas: java, arraylist, java.util.scanner, next

Java Scanner, tomando las entradas del usuario desde la consola a la lista de arrays como palabras separadas: java, arraylist, java.util.scanner, next

Estoy tratando de leer la entrada del usuario desde elconsola directamente en una lista de matriz, separada por cada palabra o entidad que tiene espacios en blanco a cada lado (el comportamiento predeterminado). El problema es que estoy atrapado dentro de un ciclo while. Scanner.next () sigue esperando más entrada, aunque sé que quiero dejar de alimentar la entrada después de que el usuario presiona volver:

Scanner input = new Scanner(System.in);

System.out.print("Enter a sentence: ");
do {
if (words.add(input.next());

} while (input.hasNext());

System.out.println(words);

Ingreso una línea, excepto que tendré que presionarCTRL-D para terminarlo (IE. Señalizar el final de la entrada). Solo quiero finalizarlo automáticamente cuando se presiona el carácter de retorno "n" al final de la oración.

Respuestas

2 para la respuesta № 1

Puede ser más simple usar split para lo que quieres.

// read a line, split into words and add them to a collection.
words.addAll(Arrays.asList(input.nextLine().split("\s+")));

1 para la respuesta № 2

Siempre puedes usar la clase Console, así:

Console console = System.console();

System.out.print("Enter a sentence: ");

List<String> words = Arrays.asList(console.readLine().split("\s+"));

System.out.println(words);

El método readline () debería ocuparse del problema n.

Si necesita un escáner para las capacidades de lectura de tipos, puede mezclar ambas clases:

Scanner scanner = new Scanner(console.reader());

¡Espero que esto ayude!


0 para la respuesta № 3

Puede llamar a input.hasNextLine y input.nextLine para obtener una línea, y luego cree un nuevo escáner para la línea que obtuvo y use el código que tiene ahora. No es la solución más barata, pero es una forma fácil de implementarla hasta que encuentre una mejor :-)