现在用这个撕掉我的头发。这是我在Java中的第二个程序,我试图将一个简单的Dog类扩展为Dog类的数组。我看不出这有什么问题,但我得到的错误是:
Exception in thread "main" java.lang.NullPointerException
at Dogprint.main(Dogprint.java:5)
public class Dogprint {
public static void main(String[] args) {
Dog[] dog1 = new Dog[2];
dog1[0].setbreed("poodle");
dog1[0].setsize(2);
dog1[1].setbreed("Alsation");
dog1[1].setsize(5);
for (int i = 0; i < 2; i ++) {
System.out.println(dog1[i].getsize());
System.out.println(dog1[i].getbreed());
}
}
}
class Dog {
private int size;
private String breed;
public void setbreed(String breed) {
this.breed = breed;
}
public void setsize(int size) {
this.size = size;
}
public int getsize() {
return size;
}
public String getbreed() {
return breed;
}
}
答案 0 :(得分:6)
您创建了一个Dog
的数组,但是您没有创建要进入数组的Dog
个对象。 Java将所有元素初始化为null
。使用new Dog()
显式初始化元素。
Dog[] dog1 = new Dog[2];
dog1[0] = new Dog();
dog1[0].setbreed("poodle");
dog1[0].setsize(2);
dog1[1] = new Dog();
dog1[1].setbreed("Alsation");
dog1[1].setsize(5);