java - 类构造函数给我一个错误
问题描述
我当前的代码不完整,但是我想要做的是让我的方法readDataFromFile
读取包含动物(名称、物种等)的文件并将它们添加到我Zoo
使用的扫描仪中。
我有2节课:Zoo
&Animal
我对这一行有一个错误:
addAnimal( new Animal(species, name) );
Blue Jay 解释了为什么它不起作用:
“Animal 类中的构造函数 Animal 不能应用于给定类型;
必需:Java.lang.String,java.lang.String,MyZoo 发现:java.lang.String,java.lang.String 原因:实际参数列表和形式参数列表的长度不同”
动物园类:
public class MyZoo
{
private String zooId;
private int nextAnimalIdNumber;
private TreeMap<String, Animal> animals;
private Animal animal;
public MyZoo(String zooId)
{
this.zooId = zooId.trim().substring(0,3).toUpperCase();
nextAnimalIdNumber = 0;
animals = new TreeMap<String, Animal>();
}
public void addAnimal(Animal animal)
{
animals.put(animal.getName(), animal);
this.animal = animal;
}
public void readDataFromFile(String fileName) throws FileNotFoundException
{
JFrame mainWindow = new JFrame();
FileDialog fileDialogBox = new FileDialog(mainWindow, "Open", FileDialog.LOAD);
fileDialogBox.setDirectory(".");
fileDialogBox.setVisible(true);
fileName = fileDialogBox.getFile();
String directoryPath = fileDialogBox.getDirectory();
File dataFile = new File (fileName);
Scanner scanner = new Scanner(dataFile);
zooId = scanner.nextLine();
System.out.println("ID of the Zoo: " + zooId);
int noOfAnimalsRead = scanner.nextInt();
System.out.println("no of animals read from file was " + noOfAnimalsRead + "\n");
scanner.nextLine();
while( scanner.hasNext() )
{
String name = scanner.next();
System.out.println("Name of Animal: " + name);
String species = scanner.next();
System.out.println("Name of species: " + species);
String id = scanner.next();
System.out.println("ID of Animal: " + id);
addAnimal( new Animal(species, name) );
scanner.nextLine() ;
}
scanner.close();
}
}
动物类:
public class Animal
{
private String id;
private String species;
private String name;
public Animal(String species, String name, MyZoo owner)
{
id = owner.allocateId();
this.species = species;
this.name = name;
}
public String getId()
{
return id;
}
public String getName()
{
return name;
}
public String getSpecies()
{
return species;
}
public String toString()
{
return id + " " + name + ": a " + species;
}
}
解决方案
根据 IDE 的“解释”,当您创建新的 Animal 对象时,您似乎没有将足够的参数传递给构造函数。它期望在物种之上的 myZoo 类型的对象作为字符串和名称作为字符串。
推荐阅读
- c++ - 转换错误 - find() 返回类型是什么?
- python - 从文本文件中读取特定行,然后检查它是否等于字符串变量?
- c++ - C ++ SFML如何用自己的物理特性使子弹产生?
- swift - 有没有办法在 swift 上异步运行 SimplePing?
- reactjs - SCSS 不透明度构建错误?
- java - 如果在 for-each-loop 到 Stream
- c# - FluentValidation 在列表中查找重叠的日期时间
- python - Python:将字典中的键转换为可以重复的星期几
- python - 为什么 CNN 的执行量超过了训练规模
- mysql - 使用Node js将未知的csv文件插入mysql db