如何通过按 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);
}
}
我试图通过按键盘上的 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);
}
}