在下面的代码中,我定义了一个名为的方法loadItems,该方法将Item在文本文件的每一行中创建一个类型为数组的列表。
=和之前,是需要存储在新项目中的数字。总结起来,每一行看起来像:String=int。问题在于loadItems,我没有得到一个新的项目,而是返回一个布尔值,而不是返回一个新项目并将其存储在数组列表中。我之所以这样想是因为新项目是在while函数中创建的,该函数在文本文件中检查新行。
ArrayList<Item> loadItems() throws FileNotFoundException {
File phaseOneFile = new File("Phase-1.txt");
Scanner readPhaseOneFile = new Scanner(phaseOneFile);
while (readPhaseOneFile.hasNextLine()){
String actualLine = readPhaseOneFile.nextLine();
String[] actualLineToItem = actualLine.split("=");
Item newItem = new Item();
newItem.itemName=actualLineToItem[0];
newItem.itemWeight= Integer.parseInt(actualLineToItem[1]);
return loadItems().add(newItem);
}
}
Run Code Online (Sandbox Code Playgroud)
有几件事。
首先,您应该在建立列表后立即返回,因此请删除return。
二,循环结束后返回列表
第三,将内容累积在实际内容中ArrayList并返回而不是递归。
第四,无需返回具体类型,只需返回即可List<Item>。
List<Item> loadItems() throws FileNotFoundException {
File phaseOneFile = new File("Phase-1.txt");
Scanner readPhaseOneFile = new Scanner(phaseOneFile);
List<Item> items = new ArrayList<Item>();
while (readPhaseOneFile.hasNextLine()){
String actualLine = readPhaseOneFile.nextLine();
String[] actualLineToItem = actualLine.split("=");
Item newItem = new Item();
newItem.itemName=actualLineToItem[0];
newItem.itemWeight= Integer.parseInt(actualLineToItem[1]);
items.add(newItem);
}
return items;
}
Run Code Online (Sandbox Code Playgroud)