Java:将文本文件读取到数组时出错

时间:2017-07-24 15:45:02

标签: java arraylist netbeans bufferedreader

我正在尝试将文本文件读取到arrayList,但它正在告诉我

  

“没有为add(string)方法找到合适的方法   Collection.add(Animal)不适用(参数不匹配;字符串   不能转换为动物)“

我有一个名为Animal的类,其中这是我的构造函数代码

    //Constructor
public Animal(String aType, String aColor, boolean aVertebrate, boolean aFly, boolean aSwim) {
    type = aType;
    color = aColor;
    vertebrate = aVertebrate;
    fly = aFly;
    swim = aSwim;

}

在我的主要课程中,这是我用来阅读文本文件的代码

    else if (menuSelection.equalsIgnoreCase("I")){
            Animal a;
            String line;

            try (BufferedReader br = new BufferedReader(new FileReader("animalFile.txt"))){
                if (!br.ready()){
                    throw new IOException();
                }
                while((line = br.readLine()) != null){
                    animalList.add(line);
                }
                br.close();
            }catch (FileNotFoundException f){
                System.out.println("Could not find file");
            }catch (IOException e){
                System.out.println("Could not process file");
            }

            int size = animalList.size();
             for (int i = 0; i < animalList.size(); i++) {
                    System.out.println(animalList.get(i).toString());
             }

我在“animalList.add(line)”

上收到错误消息

3 个答案:

答案 0 :(得分:1)

列表animaListAnimal的列表。 BufferedReader readLine()会返回String,因此您无法将String添加到Animal列表中。

在这一行中你应该调用一个将字符串转换为动物对象的方法。

 while((line = br.readLine()) != null) {
     Animal animal = getAnimal(line);
     animalList.add(animal);
 }

该方法希望:

private Animal getAnimal(String in) {

// Split string and initialize animal object correctly

}

答案 1 :(得分:0)

您尚未显示animalList是什么,但从代码中我推断它是List Animalbr.readLine()会返回String,但您要将其添加到期望animalList的{​​{1}}。因此,错误。

答案 2 :(得分:0)

我相信“animalList”是一个Animal类型的对象列表。因此,当您调用animalList.add(line)时,这会尝试添加一个String对象(因为line = br.readLine()从文件中读取一个字符串),而Animal对象应该被添加。

您需要做的是

  1. 将字符串解析为接受Animal构造函数(aType,aColor等等)的数据。
  2. animalList.add(line)修改为animalList.add(new Animal(/*Put parsed parameters here*/)) ..