我正在尝试将文本文件读取到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)”
上收到错误消息答案 0 :(得分:1)
列表animaList
是Animal
的列表。 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
Animal
。 br.readLine()
会返回String
,但您要将其添加到期望animalList
的{{1}}。因此,错误。
答案 2 :(得分:0)
我相信“animalList”是一个Animal类型的对象列表。因此,当您调用animalList.add(line)时,这会尝试添加一个String对象(因为line = br.readLine()
从文件中读取一个字符串),而Animal
对象应该被添加。
您需要做的是
animalList.add(line)
修改为animalList.add(new Animal(/*Put parsed parameters here*/))
..