我希望这看起来不是一个简单的问题。 我之前已经能够通过这种方法填充二维数组。但我不确定如何使用这个网格或类似的网格来填充 3D 数组。这可能是一个非常简单的问题,但我希望有人能指出我正确的方向。 我想用它来制作 2d 游戏关卡。
int[][][] LevelGrid = new int[LevelGridHeight][LevelGridWidth][3];
int[][][] start_Grid = { {5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,},
{2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,} }
谢谢
最佳答案
您可以将一维数组视为“事物”的数组,无论该数组是什么类型,事物都是如此。
int[] array1 = {1, 2, 3};
int[] array2 = {4, 5, 6};
int[] array3 = {7, 8, 9};
int x = array1[0];
您可以将二维数组视为数组的数组。
int[][] array2d= {array1, array2, array3};
int[] xArray = array2d[0];
int x = xArray[0]; //array2d[0][0];
您可以将三维数组视为数组的数组的数组。
int[][][] array3d = {array2d_1, array2d_2, array2d_3};
int x = array3d[0][0][0];
因此,您可以先构建子数组,然后将它们添加到 3D 数组中,也可以在一个 block 中完成所有操作:
int[][][] array3D = {
{ {0,1,2}, {0,1,2} }, { {0,1,2}, {0,1,2} },
{ {0,1,2}, {0,1,2} }, { {0,1,2}, {0,1,2} }
};
编辑:以下是首先构建子数组,然后从中构建 3d 数组的示例:
void setup() {
//one-dimensional arrays are arrays of things
int[] array1 = {1, 2, 3};
int[] array2 = {4, 5, 6 };
int[] array3 = {7, 8, 9};
int[] array4 = {10, 11, 12};
int[] array5 = {13, 14, 15};
int[] array6 = {16, 17, 18};
//two-dimensional arrays are arrays of arrays
int[][] row1 = {array1, array2, array3};
int[][] row2 = {array4, array5, array6};
//three-dimensional arrays are arrays of arrays of arrays
int[][][] array3d = {row1, row2};
}
而且我没有设置大小,因为我使用的是数组初始化简写,所以我不需要提前设置大小。请注意,初始化 start_Grid 时也没有设置大小。
还要注意,就像其他人所说的那样,使用这样的数组可能会变得非常笨拙。因此,除非您有充分的理由使用数组,否则您可能应该使用某种数据结构。我想无论你的“底层”数组代表什么,都可以用某种对象来代表,然后你只需要一个二维数组,这更容易考虑。但这实际上取决于您 - 3D 数组只是数组的 2D 数组!
关于java - 如何使用特定值填充 3d 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29475891/