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

5 に答える 5

7

Java には実際には 2 次元配列がないことを理解することが重要です。配列の配列があります。つまり、たとえば、次のようにすることができます。

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

したがって、第 2 レベルの上限はありません。Java 配列は本質的にギザギザであり、上記の 2 番目のレベルにはそれぞれ独自の長さがあります。

したがって、それらを正しくループするには、第 2 レベルの配列のそれぞれをチェックする必要があります。

int x, y;
int[] second;

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

完全な例:ライブコピー

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
于 2013-10-13T09:23:51.683 に答える
-2

これを試して

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

あなたがコメントしたように:

上限は行と列の最大インデックスです

于 2013-10-13T09:24:13.340 に答える