数组&空指针异常问题

时间:2013-12-28 20:22:06

标签: java arrays nullpointerexception

你好我是一名新的计算机工程专业的学生和学习java,我的问题可能很容易解决,但我努力找到解决方案而且不能,我的期末考试即将到来,所以我很急,需要帮助

我收到此错误消息;

Exception in thread "main" java.lang.NullPointerException
    at Lab8.ModelingAgency.addModel(ModelingAgency.java:45)
    at Lab8.ModelingApp.main(ModelingApp.java:45)

我要做的是,创建一个模型代理类,其中包含没有模型的模型数组。用模型创建第二个数组。通过addModel方法将第二个数组的模型添加到建模代理对象。如果建模机构的模型超过4,则会出错。

将模型分配给部件中的数组元素时出现NullPointerException错误:

this.modelList[modelCount] = new Model(modelp);
this.modelCount++;

与modelList相关的任何内容都会产生空指针异常

我编写了“默认”同性恋模型以摆脱np异常,但使用这些异常对数组进行初始化也没有解决问题。

由于空指针异常,我无法尝试代码,所以可能会有更多的错误我会尝试将它们作为soons来解决,因为我摆脱了空指针异常。

public class ModelingAgency {

    // properties
    private String name;
    private int modelCount;
    private Model[] modelList;

    // contructors
    public ModelingAgency ( String name) {
        this.name = name;
        Model[] modelList = new Model[4];
        modelCount = 0;

        // for ( Model model: modelList){

        for ( int i = 0; i < modelList.length; i++)
            modelList[i] = new Model ("Default", "Gay", 69);
        }


    // methods
    public int addModel ( Model modelp ) {

        if (modelp == null)
            return -4;
        if ( this.modelCount > 4){
            //System.out.println("Can't add too much models.");
            return -1;
        }
        for ( int i = 0; i < modelCount; i++){
            if (modelp.equals(this.modelList[i])) {
                return -2;
            }   
        }
        if (!(modelp.checkAge())){
            return -3;
        }

        this.modelList[modelCount] = modelp; // LINE OF NULL POINTER EXCEPTION
        this.modelCount++;
        return 0;
    }

    public String toString (){
        String result = "";
        for (int i = 0; i < modelCount; i++ ){
            result+= " " + this.modelList[i] + " \n";
        }
        return result;
    }

}

1 个答案:

答案 0 :(得分:3)

您在modelList构造函数中阴影您的实例变量ModelingAgency,因此初始化具有相同名称的本地变量。改变

Model[] modelList = new Model[4];

modelList = new Model[4];