Java 查找二维数组的值?

Java 查找二维数组的值?,java,arrays,multidimensional-array,processing,Java,Arrays,Multidimensional Array,Processing,我有一个使用柏林噪声生成地形的2d阵列,然后在特定高度放置一个(3D)块-在您单击“离开”之前,我需要的帮助是生成“高度贴图”的2d阵列。我试图通过直接在二维数组中向上、向下、向左和向右检查值来确定它旁边的块是否位于同一高程(如果它是“相邻的”或否)。如果它们相等,那么它们处于相同的高度,因此是“邻居”。如果我遇到的问题是,即使块没有邻居,对于所有邻居,检查总是返回true 柏林噪声高度图的一个小示例 151514141312121111 151414131313121211 141414131

我有一个使用柏林噪声生成地形的2d阵列,然后在特定高度放置一个(3D)块-在您单击“离开”之前,我需要的帮助是生成“高度贴图”的2d阵列。我试图通过直接在二维数组中向上、向下、向左和向右检查值来确定它旁边的块是否位于同一高程(如果它是“相邻的”或否)。如果它们相等,那么它们处于相同的高度,因此是“邻居”。如果我遇到的问题是,即使块没有邻居,对于所有邻居,检查总是返回true

柏林噪声高度图的一个小示例

151514141312121111
151414131313121211
141414131312121211
141313131312121211
131313121212121111
131312121212111111
121212121111111111
111111111110101111
111111111010101111
111111111010101010
111111111010101010
101011101010101010
101010101099109999
991010109999988889
999109999888888999
这是检查代码,您必须查看整个文件,链接到下面的上下文

if(地形[x][leftColumn]==地形[x][z]){
邻居[2]=true;//左侧
}
如果(地形[x][rightColumn]==地形[x][z]){
邻居[3]=true;//右侧
}
如果(地形[下方][z]==地形[x][z]){
邻居[4]=true;//正面(下方)
}
如果(地形[行上][z]==地形[x][z]){
邻居[5]=true;//背面(上方)
}    
巴斯德宾:

非常感谢您的帮助,Asher

移动此静态变量初始化

boolean[] neighbors = new boolean[]{false, false, false, false, false, false};
在内部循环中,检查每个块的邻居,为每个块实例化一个新的邻居数组。现在,邻居是一个静态变量。您从未重置邻域数组上的值,因此在每次迭代后该值仍为真

编辑:


如果错误,则要检查列或行是否超出范围,对吗?然后,您需要查看它们是否为>=chunkSize。

对于循环的所有迭代,您都在重用相同的邻居数组,并且您从未将其任何元素设置为false。因此,一旦一个邻居成为一个小区的tru,其余所有小区都是如此。了解局部变量。尽可能减少变量的范围。这是可行的,但是有些块无法感知它们的邻居,但这可能是我的代码的另一个问题,我不确定答案,我相信这应该可以解决改进它的问题,但它仍然无法正确感测它的邻居
  if (belowRow > 1) { 
    belowRowExists = false;
    belowRow = 0;
  } 
  if (rightColumn > - 1) { 
    rightColumnExists = false;
    rightColumn = 0;
  }