有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我需要使用扫描仪从一行中读取多个数字(不知道要读取多少个数字,但我知道它们最多是六个数字)。我尝试了在网上找到的东西,但找不到解决办法。当用户写入-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) 个答案

  1. # 1 楼答案

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

       line=scanner.nextLine();
    
       // split there
       String elements[]=line.split("\\W+");
    
       // convert to int    
       for (int i=0;i<elements.length;i++)
           ints[counter++]=Integer.parseInt(elements[i]);
    
       // check
       for (int i=0;i<counter;i++)
           System.out.println("INT ["+i+"]:"+ints[i]);
    
  2. # 2 楼答案

    因为您没有检查Scanner是否有另一个int(当它没有其他元素时,Scanner不会返回-1)。这个

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

    应该是这样的

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