gpt4 book ai didi

java - 我怎样才能避免 java.lang.NullPointerException 错误

转载 作者:行者123 更新时间:2023-12-03 20:57:59 24 4
gpt4 key购买 nike

我的代码有问题。

首先,这是我的代码。

public class Zoo {
public int j=0;
public Animal[] park;

// Exercise 9
public Zoo() {
Animal[] park = new Animal[10];
}

// Exercise 10
public void addAnimal(Animal first) {
for (int i = 0; i < 10; i++) {
if (park[i] != null) {
park[i] = first;
i=j;
i = 10;
} else if (i == 9) {
System.out.println("The zoo is full!");
}

}
}

// Exercise 11
public void feed() {
for (int i = 0; i < 10; i++) {
park[i].mass *= 1.1;
}
}

public String toString() {
String result = "The list:\n";
for (int i = 0; i< 10; i++) {
result = result + "cage " + i + " status:" + park[i] + "\n";
}
return result;
}

public void print() {
System.out.println(park.toString());
}

public int totalLegs() {
int totalLeg = 0;
for (int i = 0; i < 10; i++) {
totalLeg += park[i].legs;
}
return totalLeg;
}
}

还有

public class Animal {
float mass;
String name;
int legs;

// Exercise 6-6
public Animal(String randomName) {
name = randomName;
legs = 0;
mass = 0;
}

// Exercise 6-7
public Animal(float one, String two, int three) {
mass = one;
name = two;
legs = three;
}

//Exercise 7
public String toString(){
return "name =" + name + "legs=" + legs + "mass=" + mass;
}

public void massSetter() {

}

public String getName() {
return name;
}

public int getLegs() {
return legs;
}
}

public class TestZoo {
public static void main(String[] args){
Zoo zoo = new Zoo();
Animal elephant = new Animal(300f,"elephant",4);
Animal spider = new Animal(0.5f,"spider",6);
Animal snake = new Animal(10f,"snake",0);

zoo.addAnimal(elephant);
zoo.addAnimal(spider);
zoo.addAnimal(snake);

zoo.print();

System.out.println("Average number of legs is");


}
}

您可能可以从代码中看出,我是编程新手,当我运行最后一个类 (TestZoo.java) 时,出现以下错误。

 Exception in thread "main" java.lang.NullPointerException
at Zoo.addAnimal(Zoo.java:13)
at TestZoo.main(TestZoo.java:9)

我进行了一些搜索,显然当我尝试传递一个 null 时出现了这个错误,就好像它有什么东西一样。

我查看了 Zoo 类的第 13 行,老实说我不知道​​如何解决这个问题。

如有任何帮助,我们将不胜感激。

提前致谢

最佳答案

问题是:

public Animal[] park;

public Zoo() {
Animal[] park = new Animal[10];
}

您正在声明一个名为 parkinstance 变量 - 但随后在构造函数中,您没有为该实例变量赋值,而是创建了一个 local 变量称为 park 并为其赋值。将您的构造函数更改为:

public Zoo() {
park = new Animal[10];
}

或者您可以将声明更改为:

public Animal[] park = new Animal[10];

并完全删除显式构造函数声明。

无论哪种方式,当您调用 addAnimal 时,实例变量 park 都将是非空的。

此外,在 addAnimal 中,存在各种问题。首先,您将继续查看 park 直到找到一个 non-null 条目,而不是直到找到一个 null 条目……这是错误的一路走来。

对于代码,我还会更改其他各种内容(例如,将字段保持私有(private)),但希望这足以让您继续。

关于java - 我怎样才能避免 java.lang.NullPointerException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19835301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com