0

我正在尝试查找 3D 数组中特定元素的长度。我正在尝试这样做:


if(grid[x][y][0].size<5)


而且我似乎无法找出正确的方法来做到这一点。谢谢!

编辑:不幸的是 .length 不起作用“长度无法解析或不是字段”。此外,元素是对象。

有人要求澄清,我想知道数组的第 3 个元素中是否有少于 5 个对象。

谢谢!

4

4 回答 4

1

您将需要使用而不是大小。

grid[x][y].length

但是,您必须记住,您只获得了[z]数组部分的大小。

如果要获取网格中“单元格”的数量,则需要将所有网格元素相加。

totalsize = grid.length*grid[x].length*grid[x][y].length;

即使这样,您也必须保证数组的大小x y and z在所有元素之间是恒定的。

请记住,这些是数组的数组,它们并不一致。

例如,

public static void main(String[] args) {

    int[][] foo = new int[][] {
        new int[] { 1, 2, 3 },
        new int[] { 1, 2, 3, 4},
    };

    System.out.println(foo.length); //2
    System.out.println(foo[0].length); //3
    System.out.println(foo[1].length); //4
}

危险...

int nir[][] = new int[5][];
nir[0] = new int[5];
nir[1] = new int[3];
System.out.println(nir[0].length); // 5
System.out.println(nir[1].length); // 3
System.out.println(nir[2].length); // Null pointer exception

每行的列长度不同。如果您通过固定大小的 2D 数组支持某些数据,则为包装类中的固定值提供 getter。

PS。你不能这样做grid[x][y][0].length,因为你正在访问一个特定的元素。

于 2013-09-10T23:40:24.560 回答
0

正确的表达是

grid[x][y].length
于 2013-09-10T23:38:44.790 回答
0

你要找的是这个:

if(grid[x][y].length < 5){ .... }
于 2013-09-10T23:40:18.423 回答
0

什么样的三维数组?如果它是 String[][][] 或 int[][][] 或类似的东西,你应该尝试grid[x][y].length使用 size。

它给出了哪个错误?

于 2013-09-10T23:41:39.357 回答