while for finalizar con ciclo java input enter

for - ciclo while en java



¿Cómo salgo de un ciclo while presionando Enter? (3)

Estoy tratando de romper un ciclo while presionando la tecla Enter en un teclado. Mi código es:

package javaapplication4; import java.util.ArrayList; import java.util.Scanner; public class JavaApplication4 { public static void main(String[] args) { Scanner keyboard = new Scanner(System.in); ArrayList<Double> numbers = new ArrayList( ); while (true) { System.out.println("Please enter the numbers seperated by a space: "); numbers.add(keyboard.nextDouble()); //want the while loop to break here by pressing "enter" after entering array values } System.out.println(numbers); }


A mí me gusta usar try {...} catch (NumberFormatException) así que cuando obtienes una línea en blanco (es decir, ingresas) tu bloque catch está activado y has escapado del loop

try { while (true) { System.out.println("Please enter the numbers seperated by a space: "); numbers.add(keyboard.nextDouble()); //want the while loop to break here by pressing "enter" after entering array values } } catch (NumberFormatException ex) {} System.out.println(numbers);


No use un bucle para obtener la entrada, o nextDouble . Lo que realmente quieres es una línea de entrada, que luego se divide en una lista de dobles. Entonces use nextLine , nextLine y nextLine cada elemento. Algo como esto:

Scanner keyboard = new Scanner(System.in); ArrayList<Double> numbers = new ArrayList( ); String input = keyboard.nextLine(); for(String item : input.split(" ")){ numbers.add(Double.parseDouble(item)); }

Esto ignora cualquier tipo de validación de entrada, pero muestra un enfoque general.

Esto funcionará porque una vez que presionas "enter", termina la primera línea, lo que significa que el escáner puede pasar de la siguiente nextLine al grueso de tu código. Como nunca intenta leer nada más, no bloquea la espera de más entradas y puede salir exitosamente una vez hecho.


import java.util.ArrayList; import java.util.Scanner; import java.util.StringTokenizer; public class JavaApplication4 { public static void main(String[] args) { Scanner keyboard = new Scanner(System.in); ArrayList<Double> numbers = new ArrayList(); System.out.println("Please enter the numbers seperated by a space: "); String line = keyboard.nextLine(); StringTokenizer token = new StringTokenizer(line, " "); while(token.hasMoreTokens()) { numbers.add(Double.parseDouble(token.nextToken())); } System.out.println("Numbers: " + numbers); }

}