如何通过按 enter 退出 while 循环?

How do I exit a while loop by pressing enter?

我试图通过按键盘上的 Enter 键来中断 while 循环。我的代码是:

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);
    }

不要使用循环来获取输入,或者 nextDouble。您真正想要的是一行输入,然后将其拆分为双打列表。所以使用nextLine,拆分它,解析每一项。像这样:

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));
}

这忽略了任何类型的输入验证,但它显示了一种通用方法。

这会起作用,因为一旦您点击 "enter",它就会结束第一行,这意味着扫描器可以越过 nextLine 进入您的大部分代码。由于您再也不会尝试阅读任何内容,因此它不会阻止等待更多输入,并且可以在完成后成功退出。

我自己喜欢使用 try { ... } catch (NumberFormatException) 所以当你得到一个空行(即输入)时你的 catch 块被激活并且你已经逃脱了循环

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);
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);

    }

}