Java - 尝试在数组上放置空值



>我正在尝试在此数组的某些值上放置空值:

public ElectricInstallation(){
    this.dim1 = (int) Math.random()*85 + 1;
    this.dim2 = (int) Math.random()*85 + 1;
    this.dim3 = (int) Math.random()*85 + 1;
    for(int i = 0; i < this.dim1; i++){
        for(int j = 0; j < this.dim2; j++){
            for(int k = 0; k < this.dim3; k++){
                this.machine[i][j][k] = null;
            }
        }
    }
}

因此,我正在尝试在此数组上创建空值以在此之后执行此操作:

public void makeScenario(){
    for(int i = 0; i < this.dim1; i++){
        for(int j = 0; j < this.dim2; j++){
            for(int k = 0; k < this.dim3; k++){
                if(Math.random() < 0.7){
                    this.machines[i][j][k] = new ElectricMachine((int) Math.random()*15000 + 1);
                    if(Math.random() < 0.5){
                        this.machine[i][j][k].clic();
                    }
                }
            }
        }
    }
}

换句话说,我想让一些值成为 ElectricMachine,而另一些值成为空值,但 java 给我这个:"java.lang.NullPointerException"。

我能做什么?

看来你没有初始化你的数组,只声明了它。

您可能应该在构造函数中初始化它,似乎您在那里选择它的大小:

public ElectricInstallation(){
    this.dim1 = (int) Math.random()*85 + 1;
    this.dim2 = (int) Math.random()*85 + 1;
    this.dim3 = (int) Math.random()*85 + 1;
    // I think this is the missing part : 
    this.machine = new ElectricMachine[dim1][dim2][dim3];
    for(int i = 0; i < this.dim1; i++){
        for(int j = 0; j < this.dim2; j++){
            for(int k = 0; k < this.dim3; k++){
                this.machine[i][j][k] = null;
            }
        }
    }
}

您还忘记发布堆栈跟踪,以便我们可以看到 NullPointerException 真正发生的位置。如果您已在尚未发布的其他代码中初始化了数组,则 NPE 很可能在 click() 调用

相关内容

  • 没有找到相关文章

最新更新