如何编写用户只按Enter键时执行的方法?

时间:2012-03-14 13:22:58

标签: java input console

我想写一个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;
    }
}

3 个答案:

答案 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问题,解决了动作侦听器和回车键。