作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个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/
我是一名优秀的程序员,十分优秀!