/ / 2nd Array-Zeile zuerst durchlaufen und dann Spalte zuerst - Java, Arrays, 2d

Zuerst die 2d-Array-Zeile durchlaufen und dann die erste Spalte - Java, Arrays, 2d

Ich bin auf der Suche nach einer Möglichkeit, eine 2nd n by m zu überquerenint array (int [col] [row]) zuerst Zeile für Zeile (einfacher Teil) und dann spaltenweise in Java. Hier ist der Code für Zeile für Zeile, gibt es eine Möglichkeit, col by col zu tun?

for(int i = 0; i < display.length; i++){
for (int j = 0; j < display[i].length; j++){
if (display[i][j] == 1)
display[i][j] = w++;
else w = 0;
}
}

Antworten:

2 für die Antwort № 1

Hier ist ein Ansatz, der nach Spalten druckt, wenn die Zeile so viele Spalten enthält.

String[][] twoDArray = new String[][] {
new String[] {"Row1Col1", "Row1Col2", "Row1Col3"},
new String[] {"Row2Col1", "Row2Col2"},
new String[] {"Row3Col1", "Row3Col2", "Row3Col3", "Row3Col4"}
};

boolean recordFound = true;
int colIndex = 0;
while(recordFound) {
recordFound = false;
for(int row=0; row<twoDArray.length; row++) {
String[] rowArray = twoDArray[row];
if(colIndex < rowArray.length) {
System.out.println(rowArray[colIndex]);
recordFound = true;
}
}
colIndex++;
}

Ausgabe ist:

Row1Col1
Row2Col1
Row3Col1
Row1Col2
Row2Col2
Row3Col2
Row1Col3
Row3Col3
Row3Col4

3 für die Antwort № 2

Da Sie ein zweidimensionales Array als Matrix verwendet haben, können wir annehmen, dass die Länge jeder Zeile in der gesamten Matrix gleich ist (d. H. Die Anzahl der Spalten jeder Zeile ist gleich).

//So, you can treat display[0].length as the number of columns.

for(int col=0; col<display[0].length; col++)
{
for(int row=0; row<display.length; row++)
{
//your code to access display[row][col]
}
}

Hoffe das hilft!


1 für die Antwort № 3

Aufgrund der Art und Weise, wie Java-Arrays verschachtelt und nicht rechteckig multidimensional sind, ist es keine "natürliche" Sache. Beispielsweise ist Folgendes möglich:

[ ][ ][ ]
[ ][ ]
[ ][ ][ ][ ][ ]

woher [ ] ist ein Element.

Das vertikal zu durchlaufen, ist nicht sehr"natürliche" oder effiziente Bedienung. Sie können dies jedoch tun, indem Sie die Spalten bis zum Maximum der Array-Länge durchqueren, um Probleme mit Array-Outbounds mit expliziten Checks zu vermeiden, oder, wenn Sie bösartiger sind, im Hintergrund zu verweilen ArrayOutOfBounds Ausnahmen.

Edit: Im rechteckigen Fall einfach die beiden Loops wechseln. Es spielt keine Rolle, welche Zeile Sie verwenden.