java.util.Scanner:一直等待其他输入

java.util.Scanner:一直等待其他输入,java,java.util.scanner,Java,Java.util.scanner,这里全是Java新手。正在开发我的第一个Java程序之一。请帮忙。 以下是我努力实现的目标: 我需要接受用户键盘输入的以空格分隔的整数,将它们复制到数组中并进行处理。已知:用户将只输入一行数据。我不知道有多少个数字,但一旦他们按回车键,就不会有了。由于用户输入可能包含单词和特殊字符,我需要用整洁的错误处理它们,并提示用户重试。当我运行我在下面写的东西时,我进入了某种无限循环,扫描仪一直在等待额外的输入。我怎么知道它已经结束了,不会有更多的输入 代码如下: <!-- language-all

这里全是Java新手。正在开发我的第一个Java程序之一。请帮忙。 以下是我努力实现的目标: 我需要接受用户键盘输入的以空格分隔的整数,将它们复制到数组中并进行处理。已知:用户将只输入一行数据。我不知道有多少个数字,但一旦他们按回车键,就不会有了。由于用户输入可能包含单词和特殊字符,我需要用整洁的错误处理它们,并提示用户重试。当我运行我在下面写的东西时,我进入了某种无限循环,扫描仪一直在等待额外的输入。我怎么知道它已经结束了,不会有更多的输入

代码如下:

<!-- 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.");
        }
    }
}

公共静态无效输入(){
System.out.println(“输入由空格分隔的整数序列。完成后按Enter键”);
扫描仪输入=新扫描仪(System.in);
while(input.hasNext()){
if(input.hasNextInt(){
int i=input.nextInt();
系统输出打印LN(i);
}
否则{
System.out.println(“只能输入整数,请重试”);
}
}
}

似乎您应该先读取输入的单行,然后创建扫描仪来扫描该单行

尝试使用and键,首先读取该行:

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

然后创建
扫描器
,可能会将从读取字符串创建的
StringBufferInputStream
传递到其构造函数中。

谢谢Rob。我以前从未使用过这些类,因此需要查看它们的工作原理。复制/粘贴代码会导致错误,因此需要进行尽职调查。感谢您的帮助救命啊。