web-dev-qa-db-ja.com

2次元配列を反復処理する

2次元配列(array [x] [y] x = x座標、y = y座標)でシミュレートする「4つのボードを接続」しています。 「System.out.println」を使用する必要があるため、行を反復処理する必要があります。

この方法を繰り返す方法が必要です[0,0] [1,0] [2,0] [3,0] [0,1] [1,1] [2,1]など

通常の手順を使用する場合:

for (int i = 0; i<array.length; i++){
     for (int j = 0; j<array[i].length; j++){
        string += array[i][j];
     } System.out.println(string)

}

[0,0] [0,1] [0,2] [0,3]などのように繰り返すため、機能しません。

通常の手順はxのままで、列の終わりまでyを増分しますが、yで言い、行の終わりまでxを増分する必要があります。

9
Peter111

配列の配列と考えてください。これは確実に機能します。

int mat[][] = { {10, 20, 30, 40, 50, 60, 70, 80, 90},
                {15, 25, 35, 45},
                {27, 29, 37, 48},
                {32, 33, 39, 50, 51, 89},
              };


    for(int i=0; i<mat.length; i++) {
        for(int j=0; j<mat[i].length; j++) {
            System.out.println("Values at arr["+i+"]["+j+"] is "+mat[i][j]);
        }
    }
23
Bharat

次のようにインデックスの順序を逆にするだけです。

for (int j = 0; j<array[0].length; j++){
     for (int i = 0; i<array.length; i++){

すべての行が同じ量の列を持っているため、この条件j <array [0] .lengtを最初に使用できます。これは、行列を反復処理しているためです。

9
jcstar
 //This is The easiest I can Imagine . 
 // You need to just change the order of Columns and rows , Yours is printing columns X rows and the solution is printing them rows X columns 
for(int rows=0;rows<array.length;rows++){
    for(int columns=0;columns <array[rows].length;columns++){
        System.out.print(array[rows][columns] + "\t" );}
    System.out.println();}
4

インデックスを変更するだけです。 iおよびj ....ループ内で、さらに文字列を処理している場合は、concatを使用して変数を空のStrongに初期化する必要があります。そうしないと、例外が発生します。

String string="";
for (int i = 0; i<array.length; i++){
    for (int j = 0; j<array[i].length; j++){
        string = string.concat(array[j][i]);
    } 
}
System.out.println(string)
2
BadNews

シンプルなアイデア:最長の行の長さを取得し、各列を反復して、要素があれば行の内容を印刷します。以下のコードは、単純なテキストエディタでコーディングされたため、いくつかのオフバイワンエラーが発生する場合があります。

  int longestRow = 0;
  for (int i = 0; i < array.length; i++) {
    if (array[i].length > longestRow) {
      longestRow = array[i].length;
    }
  }

  for (int j = 0; j < longestRow; j++) {
    for (int i = 0; i < array.length; i++) {
      if(array[i].length > j) {
        System.out.println(array[i][j]);
      }
    }
  }
0
Mateusz Dymczyk