2013-09-10 4 views
0

Я пытаюсь найти длину определенного элемента в трехмерном массиве. Я пытаюсь сделать это:Найти длину определенного элемента многомерного массива * java *


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


и что я не могу показаться, чтобы выяснить правильный способ сделать это сделать. Благодаря!

Редактировать: К сожалению .length не работает, «длина не может быть разрешена или не является полем». ТАКЖЕ, элементы - это объекты.

Некоторые люди просили уточнить, я хочу знать, существует ли менее 5 объектов в 3-м элементе массива.

Спасибо!

+0

'.length' дает длину массива в Java. –

+1

Каков тип вашего массива? Являются ли элементы ** строками **? –

+1

Если элементы 'int''s, то вы в основном спрашиваете, как найти длину определенного' int'. Это 32 бита. Вероятно, это не то, что вы ищете, поэтому вам, вероятно, нужно переосмыслить то, что вы пытаетесь спросить. – ajb

ответ

0

Правильное выражение

grid[x][y].length 
+0

Может ли пояснитель объяснить? – hexafraction

0

Что вы ищете это:

if(grid[x][y].length < 5){ .... } 
+1

Единственный способ, которым это будет работать, - это если сам элемент является массивом. И если бы это было так, это было бы 4 мерно. –

+0

@owlstead Да, ты прав. Обновленный ответ. –

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-массива с фиксированным размером, то предоставляйте получателям фиксированные значения в классе-оболочке.

PS. Вы не можете сделать grid[x][y][0].length, потому что вы обращаетесь к определенному элементу.

+0

Что это означает «* [0] часть массива *"? –

0

Какой вид трехмерного массива? ЕСЛИ это String [] [] [] или int [] [] [] или что-то подобное, вы должны попробовать grid[x][y].length вместо размера.

Какую ошибку он дает?

+0

Как бы ваш код работал с 'int'? Пожалуйста, объясни. –

+1

Если это 'String [] [] []', то правильным ответом будет 'grid [x] [y] [0] .length()', так как 'length' - это метод класса String. Если это 'int [] [] []', то правильный ответ равен 32. :) – ajb

+0

Точно так же, как это происходит: int [] test = {1,2,3}; System.out.println ("Размер:" + test.length); Размер массива int (одномерный или двумерный или x-мерный) всегда имеет значение array.length, а не .size. –

Смежные вопросы