我需要显示名称、物种名称、生命值和强度。除了物种名称打印为空之外,所有内容都会打印。有什么想法吗?
这是我的主课
if (species.equals("b") || species.equals("B")) {
Creature balrog = new Creature(name, strength, hit);
players.add(balrog);
System.out.println("Current Players: ");
System.out.println("NAME | SPECIES | STRENGTH | HIT POINTS");
for (int i = 0; i < players.size(); i++) {
System.out.println(players.get(i).toString());
}
}
这是在我的 Creature 类中,它将打印所有内容
public String toString() {
String result = name;
result += " | ";
result += species;
result += " | ";
result += strength;
result += " | ";
result += hitPoints;
result += "\n";
return result;
}
最后,炎魔类,生物的子类
Balrog(String name, int strength, int hit){
super(name,strength,hit);
}//ends Balrog constructor
String getSpecies(){
return "Balrog";
}
没有错误消息,它只是在物种名称应该是的地方打印出 null。
最佳答案
您正在创建父类(super class)的实例而不是子类
Creature balrog = new Creature(name, strength, hit);
应该是
Creature balrog = new Balrog(name, strength, hit);
您还需要在 toString 中获取子类的物种
public String toString() {
String result = name;
result += " | ";
result += getSpecies();
result += " | ";
result += strength;
result += " | ";
result += hitPoints;
result += "\n";
return result;
关于java - 当我打印我的对象时,对象的物种显示为空,而不是说物种(例如应该说炎魔),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58330656/