2013-10-13 3 views
1

У меня есть 2D массив, как следующие:Как получить длину строк и столбцов в двумерном массиве?

int[][] array= 
{ 
    {2,3,3}, 
    {5,6,66}       
}; 

Я хочу, чтобы получить длину строк и столбцов:

int rows= // get row length of array 
int columns= // get column length of array 

Спасибо!

+4

Что вы подразумеваете под верхними границами? – Maroun

+3

Пожалуйста, не используйте капители в качестве первой буквы имен переменных java. – vikingsteve

+2

Особенно названия, которые являются классами в JDK! – Bohemian

ответ

7

Важно понимать, что Java на самом деле не имеет двумерных массивов. Он имеет массивы массивов. Это означает, например, что вы можете иметь это:

int[][] array= 
{ 
    {1}, 
    {1, 2, 3}, 
    {1, 2, 3, 4, 5}, 
    {1, 2} 
}; 

Так нет один верхней границы второго уровня. Массивы Java по своей сути зазубрены, каждый из второго уровня в приведенном выше имеет свою собственную длину.

Так цикл их правильно, вы должны проверить для каждого из массивов второго уровня:

int x, y; 
int[] second; 

for (x = 0; x < array.length; ++x) { 
    second = array[x]; 
    for (y = 0; y < second.length; ++y) { 
     // .... 
    } 
} 

Полный пример: Live Copy

public class ArrayExample { 
    public static void main(String[] args) { 
     int[][] array= 
     { 
      {1}, 
      {1, 2, 3}, 
      {1, 2, 3, 4, 5}, 
      {1, 2} 
     }; 
     int x, y; 
     int[] second; 

     for (x = 0; x < array.length; ++x) { 
      second = array[x]; 
      for (y = 0; y < second.length; ++y) { 
       System.out.println(x + "," + y + ": " + second[y]); 
      } 
      System.out.println(); 
     } 
    } 
} 

Выход:

0,0: 1 

1,0: 1 
1,1: 2 
1,2: 3 

2,0: 1 
2,1: 2 
2,2: 3 
2,3: 4 
2,4: 5 

3,0: 1 
3,1: 2

Или, если вам не нужны индексы, просто значения, вы можете использовать расширенный for цикл: Live Example

public class ArrayExample { 
    public static void main(String[] args) { 
     int[][] array= 
     { 
      {1}, 
      {1, 2, 3}, 
      {1, 2, 3, 4, 5}, 
      {1, 2} 
     }; 

     for (int[] second : array) { 
      for (int entry : second) { 
       System.out.println(entry); 
      } 
      System.out.println(); 
     } 
    } 
} 

Выход:

1 

1 
2 
3 

1 
2 
3 
4 
5 

1 
2
6

Для того, чтобы лучше понять это, взгляните на это изображение:

enter image description here

Это изображение является то, что вы называете 2D массив, как вы можете видеть, что это на самом деле массив массивов.

nums.length вернет длину синего массива (который является числом строк).
Теперь, если вы хотите, чтобы получить количество столбцов, вы должны получить доступ к одной строке на nums[0], например, а затем сделать nums[0].length, который даст 4.

Теперь, просто заменить nums с array ...


Примечание: Как вы видите на рисунке, количество столбцов может отличаться и не должно быть одинаковым для каждой строки.

-2

Попробуйте

int upperBound0 = array.length - 1; // = 1 
int upperBound1 = array[0].length - 1; // = 2 

Как прокомментировал:

верхняя граница максимального индекса строк и столбцов

+2

'array.length - 1;' ?? почему '-1' – exexzian

+1

ohh Я не проверил OP обновил вопрос – exexzian

0

В двумерном массиве есть массив в каждом месте в первом массиве, поэтому вы можете указать количество столбцов, получив длину массива 2D, чтобы получить размер каждого столбца, который вы должны поместить туда, в 2D-массив, и получить длина

0

Вот как я это делаю. Предположим, что a - любой 2D-массив, где длина всех строк различна.

for(int i=0;i<a.length;i++) 
    { 
     for(int j=0;j<a[i].length;j++) 
     { 
      System.out.print(a[i][j]); 
     } 
    } 
Смежные вопросы