我试图找到3D数组中特定元素的长度。我想这样做:
if(grid[x][y][0].size<5)
我似乎无法弄清楚这样做的正确方法。谢谢!
编辑:不幸的是.length无效“长度无法解析或不是字段”。此外,元素是对象。
有些人要求澄清,我想知道数组的第3个元素中是否少于5个对象。
谢谢!
答案 0 :(得分: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
,因为您正在访问特定元素。
答案 1 :(得分:0)
正确的表达是
grid[x][y].length
答案 2 :(得分:0)
您正在寻找的是:
if(grid[x][y].length < 5){ .... }
答案 3 :(得分:0)
哪种三维数组?如果它是String [] [] []或int [] [] []或类似的东西,你应该尝试grid[x][y].length
而不是大小。
它给出了哪个错误?