我想写一个infinity while语句,每次用户按下Enter
时都会执行。当用户在控制台中输入任何内容或按两次Enter
时,我知道的每个流读者都会执行。
我想写这样的东西:
控制台:
输出1 [输入已按下onse]
输出2 [输入已按下onse]
输出3 [输入已按下onse]
[等等......]
这是我目前的代码:
addQuestionsInArray();
Random r = new Random();
DataInputStream is = new DataInputStream(System.in);
while (true) {
String question = questionsList.get(r.nextInt(questionsList.size()));
System.out.println(question);
if (String.valueOf(is.readInt()).equals("0")) {
break;
}
}
答案 0 :(得分:8)
要等待用户按Enter键,我通常会执行类似
的操作new Scanner(System.in).nextLine();
<强>演示:强>
import java.util.Scanner;
class Test {
public static void main(String[] args) {
System.out.println("Press enter.");
new Scanner(System.in).nextLine();
System.out.println("Thanks.");
}
}
<强>输出:强>
Press enter.
[enter]
Thanks.
关于您的修改,我仍然建议您使用Scanner
。 (DataInputStream
应该用于二进制数据,而不是System.in
上写的字符串和字符:
Scanner s = new Scanner(System.in);
while (true) {
String question = questionsList.get(r.nextInt(questionsList.size()));
System.out.println(question);
String input = s.nextLine();
// int input = s.nextInt(); if you want integers
if (input.equals("0"))
break;
// if (input == 0) break; if you want integers
}
答案 1 :(得分:2)
您可以使用Thread
语句指定时间间隔检查用户输入,并且如果等于System.in.read()
终止主循环,则可以定义Enter character /n/r
答案 2 :(得分:1)
在这种情况下,您会寻找action listener。
Here's另一个SO问题,解决了动作侦听器和回车键。