Jeśli chcesz row-major zamówienie, biorąc pod uwagę wiersz rowIndex
, kolumnę columnIndex
i udaje (z braku lepszego określenia) dwuwymiarowej tablicy z numberOfColumns
kolumn, formuła jest
rowIndex * numberOfColumns + columnIndex.
Jeśli chce wiersz znaczne zamówienie, ponieważ hałas rowIndex
kolumna columnIndex
i fałszowanie (na brak lepszych słowa) dwuwymiarowej tablicy o numberOfRow
rzędach, formuła jest
columnIndex * numberOfRows + rowIndex.
Więc zakładając row-major zamówienie:
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]);
}
}
wyjściowa:
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
A jeśli nalegać na indeksowanie za pomocą pojedynczego for
pętli, zakładając row-major zamówienie, formułę, która cię chcę:
int column = index % numberOfColumns;
int row = (index - column)/numberOfColumns;
Jeśli używasz kolumnowego zamówienia głównego, pożądana jest następująca formuła:
int row = index % numberOfRows;
int column = (index - row)/numberOfRows;
Więc
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]);
}
wyjście wola
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
jak oczekiwano.
Huh? Chcesz jednowymiarową tablicę wyglądać jak dwuwymiarowa tablica? –
@Simon Righarts: To jest standard. Kompilator robi to za Ciebie codziennie. – jason
tomiko, jak widać, ludzie walczą, aby zrozumieć twoje pytanie, nie walcząc o rozwiązanie twojego problemu. sprawdź swoje pytanie, abyśmy nie musieli nadwyrężać umysłów, aby cię zrozumieć. Jestem pewien, że to, co próbujesz zrobić, jest bardzo proste, kiedy poświęcisz czas, by wyrazić swoje zdanie, na pewno otrzymasz znaczącą pomoc. – pstanton