2016-12-04 16 views
-7

私は1つの2次元配列を持っているので、配列の配列です。配列DONTの配列は同じ長さです。 ここに例を示します:ギザギザの配列の各要素をどのように反復処理するのですか?

double[][] multi = new double[][] { 
    { 10, 20, 30, 40, 50 }, 
    { 1.1, 2.2, 3.3, 4.4 }, 
    { 1.2, 3.2 }, 
    { 1, 2, 3, 4, 5, 6, 7, 8, 9 } 
}; 

どのようにして列をループできますか? (同様に:10 1.1 1.2 1

+3

ようこそスタックオーバーフローに!宿題の助けを求めているようです。それ自体に問題はありませんが、これらのことを守ってください(http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845#338845)、それに応じて質問を編集してください。 –

+1

各行は配列です。配列には 'length'属性があります。 –

+2

あなたの質問は*不明です*。たとえば、列3でどのように動作しますか(列を印刷するとします)? '30、3.3、null、3'を出力すべきでしょうか? – Gendarme

答えて

1

for (double[] row: multi) { 
     for(double value: row) { 
     } 
    } 
+0

最初の例は、あなたが望むことをします。存在しない値を無視したい場合は 'multi [row] [column]'のみ 'if(column thatguy

+0

'multi [row] .length'は' multi [row] 'がnullの場合に例外をスローすることに注意してください(配列はnullになる可能性があります)。 – NightOwl888

3

2Dアレイだから1はとして反復することができます...配列の配列です:あなたが反復するために、このようにそれを行うことができます

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

は、これを行います列方向配列全体

// Get the maximum number of columns among all rows. 
int maximumColumns = 0; 
for (double[] row : multi) { 
    if (row.length > maximumColumns) { 
     maximumColumns = row.length; 
    } 
} 

for (int column = 0; column < maximumColumns ; column++) { 
    for (int row = 0; row < multi.length; row++) { 
     if (column >= multi[row].length) { 
      // There is no value for this column. 
     } else { 
      // Do stuff here with multi[row][column]. 
     } 
    } 
} 

specifのためにすべての行に存在するICの列次の操作を行います。

int columnToIterate = // Your column. 
for (int row = 0; row < multi.length; row++) { 
    if (columnToIterate < multi[row].length) { 
     // Do stuff here with multi[row][columnToIterate]. 
    } 
} 
関連する問題