重新扫描方法中的文本文件

时间:2014-02-28 06:05:00

标签: java

我有一个扫描文本文件的方法,并将数组元素和值设置为我需要它们的位置。

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;
                   }
               }
           }


    }

我遇到的问题是processTransactions方法。我想为ids []中的每个元素运行while循环。我该怎么做?

2 个答案:

答案 0 :(得分:0)

仅使用Scanner,您将无法执行此操作。 Scanner无法回到其输入源的开头。

您可能希望绕过InputStream,并根据需要创建Scanner;您可以reset() InputStream(虽然不是InputStream支持FileInputStream,但Scanner通常会支持,然后在其上创建新的{{1}}。

答案 1 :(得分:0)

而是在方法processTransactions中传递Scanner对象,传递文件路径:

public void processTransactions(String filepath){ 

     for (String string : id) {    // Assume id is array of String
              Scanner transFile = new Scanner(new File(filepath));
                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;
                           }
                       }
                   }    
                }

            }