使用扫描仪在一行中读取多个数字

时间:2015-12-06 17:33:00

标签: java java.util.scanner user-input

我需要使用扫描仪从一行读取多个数字(不知道我将阅读多少个数字,但我知道它们最多有六个数字)。我尝试了在网上找到的东西,但我找不到解决办法。当用户写入-1时,读取停止。这就是我现在写的内容:

Scanner read = new Scanner(System.in);
int i;
float buffer[] = new float[6];

while (read.nextInt() != -1) {
            if (read.hasNextInt()) {
                buffer[i] = read.nextInt();
                i++;
            } else {
                break;
            }
        }

当我尝试运行时,我得到NoSuchElementException,但我不明白为什么。这段代码有什么问题?我怎么能纠正这个?提前谢谢。

2 个答案:

答案 0 :(得分:2)

因为您没有检查Scanner是否有另一个int(并且Scanner在没有其他元素时没有返回-1。此

while (read.nextInt() != -1) {

需要像

while (read.hasNextInt()) {
    int val = read.nextInt();
    if (val == -1) {
        break;
    }
    buffer[i] = val;
    i++;
}

答案 1 :(得分:1)

或者您可以读取一次行,并将其拆分为整数

Android Studio