我有一个扫描文本文件的方法,并将数组元素和值设置为我需要它们的位置。
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循环。我该怎么做?
答案 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;
}
}
}
}
}