现在用这个撕掉我的头发。这是我的第二个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;
    }
}

最佳答案

您创建了一个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);

10-01 22:59