java - for循环和if语句发生错误

标签 java

我不明白为什么会收到错误:

java.util.NoSuchElementException null(在 java.util.Scanner 中)

用我的方法:

public void processTransactions(Scanner transFile){

        while (transFile.hasNext()){
           for(i = 0; i < ids.length; i++){
               finalInventory[i] = startingInventory[i];

               if(ids[i] == transFile.next()){
                   finalInventory[i] += transFile.nextInt();
                }
            }
        }
    }

这是我的构造器:

public SoftDrinkInventory(Scanner inventoryFile) {

        initializeString(names);
        initializeString(ids);
        initializeInt(startingInventory);
        initializeInt(finalInventory);
        initializeInt(transactionCounts);

        while (inventoryFile.hasNext()){
            names[i] = inventoryFile.next();
            ids[i] = inventoryFile.next();
            startingInventory[i] = inventoryFile.nextInt();
            i++;
        }
    }

所有变量都已在类中先前声明。

最佳答案

我猜测了一点,但我认为你的代码应该是这样的。

public void processTransactions(Scanner transFile){

    while (transFile.hasNext()){
       String key = transFile.next();
       int value = transFile.nextInt();
       for(i = 0; i < ids.length; i++){
           finalInventory[i] = startingInventory[i];

           if(ids[i].equals(key)){
               finalInventory[i] += value;
            }
        }
    }
}

每次 while 循环迭代时,您只想执行一次 next()nextInt() 。目前,您在 for 循环的每次迭代中重复 next(),这确实不是您想要的。

请注意,这不是解决您的问题的最有效的解决方案,但它消除您的错误。

此外,您还没有指定 ids 的类型,但我假设它是 String[]

关于java - for循环和if语句发生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22086660/

相关文章:

java - 为什么 UIManager.getDefaults().keySet() 返回的值与 UIManager.getDefaults().keys() 不同?

java错误不兼容的类型需要int找到double

java - 如何使用 java 获取 Aws cloudwatch 日志

java - 是否可以在 Java 中合并迭代器?

java - 使用Jacoco或IntelliJ IDEA生成单独的覆盖率报告以进行测试

java - 使用套接字发送号码

java - Apache Tomcat 上下文属性或上下文变量的参数化值?

java - 如何配置 Jaxb 以忽略 use 属性?

java - 如何将数组列表传递给 Controller

java - 在 Android 中更改按钮单击的布局