gpt4 book ai didi

java - 无法让 A 类中的数组在 B 类中工作

转载 作者:行者123 更新时间:2023-12-01 07:23:10 25 4
gpt4 key购买 nike

我正在开发一个java项目。当我第一次开始时,我在一个 java 类中有很多代码。这开始变得非常困惑,所以我尝试将代码传播到其他类中。这就是我遇到数组问题的地方。

我创建了一个创建数组的类,该数组有一个 getter 方法,因此我的主类可以使用它。

public class CreateBlockArray {

private static int[][][] blockarray;


public CreateBlockArray(){

//get coordinates

//fill array
int[][][] blockarray = new int[Xdelta+ 10][Ydelta + 10][Zdelta + 10];

blockarray = fillarray(Xlow,Ylow, Zlow, Xhigh, Yhigh, Zhigh, blockarray );
blockarray = getvisibleBlocks(Xlow,Ylow, Zlow, Xhigh, Yhigh, Zhigh, blockarray);
blockarray = filloceanfloor(Xlow,Ylow, Zlow, Xhigh, Yhigh, Zhigh, blockarray);
//these three methods modify array and than return it

}


public int[][][] getBlockarray() {
return blockarray;
}

在主类中我使用这个

CreateBlockArray Array = new CreateBlockArray();
int[][][] blockarray = Array.getBlockarray();
//more code
if (blockarray[i][k][j] != 0) //it crashes here

这会产生空指针异常。从 stackoverflow 上的类似问题中我了解到数组不是原始数组而是引用。

所以我尝试使用此代码简单地逐 block 复制数组

blockarray2 = new int[(Xhigh-Xlow)+10][(Yhigh-Ylow)+10][(Zhigh-Zlow) +10];
for(int h = Ylow; h <= Yhigh;h++)
{
for(int i = Xlow; i <= Xhigh;i++)
{
for(int j = Zlow; j <= Zhigh;j++)
{

blockarray2[i-Xlow][h-Ylow][j-Zlow] = blockarray[i-Xlow][h-Ylow][j-Zlow];

}}}

当我返回时,一切正常,没有错误。我还可以返回第一个数组而不必复制它吗?

最佳答案

问题出在这个构造函数中:

public CreateBlockArray(){

//get coordinates

//fill array
int[][][] blockarray = new int[Xdelta+ 10][Ydelta + 10][Zdelta + 10];

blockarray = fillarray(Xlow,Ylow, Zlow, Xhigh, Yhigh, Zhigh, blockarray );
blockarray = getvisibleBlocks(Xlow,Ylow, Zlow, Xhigh, Yhigh, Zhigh, blockarray);
blockarray = filloceanfloor(Xlow,Ylow, Zlow, Xhigh, Yhigh, Zhigh, blockarray);
//these three methods modify array and than return it

}

当您在方法中重新声明类时,您并没有真正修改类的 blockarray :

int[][][] blockarray = new int[Xdelta+ 10][Ydelta + 10][Zdelta + 10];

只需更改该行

blockarray = new int[Xdelta+ 10][Ydelta + 10][Zdelta + 10];

并删除该行中的static标识符:

private static int[][][] blockarray;

关于java - 无法让 A 类中的数组在 B 类中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30652455/

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