Si desea fila fila-mayor orden, dado rowIndex
, columna columnIndex
y está imitando (a falta de un mejor término) una matriz bidimensional con numberOfColumns
columnas, la fórmula es
rowIndex * numberOfColumns + columnIndex.
Si desea orden de las filas, la fila rowIndex
, columna columnIndex
dado y está imitando (a falta de un mejor término) una matriz bidimensional con numberOfRow
filas, la fórmula es
columnIndex * numberOfRows + rowIndex.
Así, suponiendo fila-mayor orden:
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]);
}
}
Salida:
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
Y si insiste en la indexación utilizando un solo bucle for
, asumiendo orden de las filas, la fórmula que se queremos es la siguiente:
int column = index % numberOfColumns;
int row = (index - column)/numberOfColumns;
Si está utilizando para la columna-principal, la fórmula que desea es la siguiente:
int row = index % numberOfRows;
int column = (index - row)/numberOfRows;
Así,
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]);
}
es la salida
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
como se esperaba.
¿Huh? ¿Quieres que una matriz unidimensional parezca una matriz bidimensional? –
@Simon Righarts: Esto es estándar. El compilador lo hace por ti todos los días. – jason
tomiko, como puede ver, las personas están luchando por comprender su pregunta, sin esforzarse por resolver su problema. por favor revise su pregunta para que no tengamos que forzar nuestros cerebros para que lo entiendan. Estoy seguro de que lo que estás tratando de hacer es muy simple, una vez que te tomes el tiempo para expresarte, estoy seguro de que obtendrás una ayuda significativa. – pstanton