java.util.Scanner:一直在等待额外的输入

时间:2012-04-25 12:46:12

标签: java java.util.scanner

这里的Java新手。在我的第一个Java程序上工作。请帮忙。 这是我想要实现的目标: 我需要接受用空白分隔的整数的用户键盘输入,将它们复制到一个数组中并处理它们。已知:用户只能输入一行数据。我不知道有多少号码,但一旦他们点击Enter,就不会再有了。由于用户输入可能包含单词和特殊字符,我需要处理整齐的错误并提示用户再试一次。当我运行下面写的内容时,我会遇到某种无限循环,其中Scanner一直在等待额外的输入。我如何告诉它已结束,将不再有任何输入?

以下是代码:

<!-- language-all: java -->

public static void EnterInts () {

    System.out.println("Enter series of integers separated by whitespace. Press Enter key when finished.");
    Scanner input = new Scanner(System.in);
    while (input.hasNext()){
        if (input.hasNextInt(){
            int i = input.nextInt();
            System.out.println(i);
        }
        else {
            System.out.println("Only integers can be entered. Try again.");
        }
    }
}

1 个答案:

答案 0 :(得分:0)

好像你应该首先读取单行输入,然后创建扫描器以扫描该单行。

首先尝试使用BufferedReaderInputStreamReader来读取该行:

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String str = in.readLine();

然后创建Scanner,也许将从读取字符串创建的StringBufferInputStream传递到其构造函数中。