、式は
rowIndex * numberOfColumns + columnIndex.
です
あなたが行rowIndex
、列columnIndex
を与えられ、(より良い用語の欠如のために)numberOfRow
行の2次元配列を偽造され、行優先順を使用する場合は、式は
です10
ので、行優先順と仮定すると:あなたは、行優先順を想定して、あなたの式を単一for
ループを使用してインデックスを主張する場合
0, 0: 1
0, 1: 2
0, 2: 3
0, 3: 4
0, 4: 5
1, 0: 6
1, 1: 7
1, 2: 8
1, 3: 9
1, 4: 10
そして:
int[10] oneDim = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int rows = 2;
int columns = 5;
for (int row = 0; row < rows; row++) {
for (int column = 0; column < columns; column++) {
System.out.println(row + ", " + column + ": " + oneDim[row * columns + column]);
}
}
出力を次のようにしてください:
int column = index % numberOfColumns;
int row = (index - column)/numberOfColumns;
カラムメジャーオーダーを使用している場合、必要な数式は次のとおりです。
int row = index % numberOfRows;
int column = (index - row)/numberOfRows;
ので、
int[10] oneDim = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int rows = 2;
int columns = 5;
for(int index = 0; index < 10; index++) {
int column = index % columns;
int row = (index - column)/columns;
System.out.println(row + ", " + column + ": " + oneDim[index]);
}
意志出力予想通り
0, 0: 1
0, 1: 2
0, 2: 3
0, 3: 4
0, 4: 5
1, 0: 6
1, 1: 7
1, 2: 8
1, 3: 9
1, 4: 10
。
Huh? 1次元配列を2次元配列のようにしたいですか? –
@Simon Righarts:これは標準です。コンパイラは毎日あなたのためにそれを行います。 – jason
tomiko、あなたの問題を解決するために苦労することなく、人々があなたの質問を理解するのに苦労しているのが分かります。あなたの質問を見直して、私たちの頭脳にあなたを理解させる必要がないようにしてください。私はあなたがやろうとしていることは非常にシンプルだと確信しています。一度自分のことを明確にする時間があれば、私はあなたにいくつか意味のある助けを得るでしょう。 – pstanton