返回ArrayList项而不是boolean

Jua*_* CA 2 java

在下面的代码中,我定义了一个名为的方法loadItems,该方法将Item在文本文件的每一行中创建一个类型为数组的列表。

  • Item对象由包含名称和带数字的int变量的String组成。
  • 文本文件的每一行都包含一个要存储在新项目中的名称,其后=和之前,是需要存储在新项目中的数字。总结起来,每一行看起来像: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)

Fed*_*oca 5

有几件事。

  • 你回来太早了
  • 你退回错误的东西
  • 您没有明显的理由使用递归

首先,您应该建立列表立即返回,因此请删除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)