Diagonaal door een 2D Java-array lussen

1. Overzicht

In deze tutorial zullen we zien hoe je diagonaal door een tweedimensionale array kunt lopen. De oplossing die we bieden, kan worden gebruikt voor een vierkante tweedimensionale array van elke grootte.

2. Tweedimensionale array

De sleutel bij het werken met elementen van een array is weten hoe je een specifiek element uit die array kunt halen. Voor een tweedimensionale array gebruiken we rij- en kolomindices om elementen van een array te krijgen. Voor dit probleem gebruiken we het volgende diagram om te laten zien hoe u deze elementen kunt krijgen.

Vervolgens moeten we begrijpen hoeveel diagonale lijnen we in onze array hebben, zoals te zien is in het diagram. We doen dit door eerst de lengte van één dimensie van de array te krijgen en die vervolgens te gebruiken om het aantal diagonale lijnen te krijgen (diagonalLines).

We gebruiken dan het aantal diagonale lijnen om het middelpunt te krijgen, wat zal helpen bij het zoeken naar rij- en kolomindexen.

In dit voorbeeld is het middelpunt drie:

int length = twoDArray.length int diagonalLines = (lengte + lengte) - 1 int midPoint = (diagonalLines / 2) + 1

3. Rij- en kolomindices ophalen

Om de hele array te doorlopen, beginnen we met het herhalen van 1 totdat de lusvariabele kleiner is dan of gelijk is aan de diagonalLines variabele.

for (int i = 1; i <= diagonalLines; i ++) {// enkele bewerkingen}

Laten we ook het idee van het aantal items in een diagonale lijn introduceren, door het te noemen itemsInDiagonal. Regel 3 in het bovenstaande diagram heeft bijvoorbeeld 3 items (g, e, c) en regel 4 heeft 2 (h, f). Deze variabele wordt met 1 opgehoogd in de lus als lusvariabele ik is kleiner of gelijk aan middelpunt. Anders wordt het met 1 verlaagd.

Na het verhogen of verlagen itemsInDiagonaal, we hebben dan een nieuwe lus met lusvariabele j. Variabel j wordt verhoogd van 0 tot het kleiner is dan itemsInDiagonal.

We gebruiken dan loopvariabelen ik en j om de rij- en kolomindexen te krijgen. De logica van deze berekening hangt af van of lusvariabele ik is groter dan middelpuntof niet. Wanneer ik is groter dan middelpuntgebruiken we ook de lengte variabele om de rij- en kolomindexen te bepalen:

int rowIndex; int columnIndex; if (i <= midPoint) {itemsInDiagonal ++; voor (int j = 0; j <itemsInDiagonal; j ++) {rowIndex = (i - j) - 1; columnIndex = j; items.append (twoDArray [rowIndex] [columnIndex]); }} else {itemsInDiagonal--; voor (int j = 0; j <itemsInDiagonal; j ++) {rowIndex = (lengte - 1) - j; columnIndex = (i - lengte) + j; items.append (twoDArray [rowIndex] [columnIndex]); }}

4. Conclusie

In deze zelfstudie hebben we laten zien hoe u diagonaal door een vierkante tweedimensionale array kunt lopen met behulp van een methode die helpt bij het verkrijgen van rij- en kolomindexen.

Zoals altijd is de volledige broncode van het voorbeeld beschikbaar op GitHub.


$config[zx-auto] not found$config[zx-overlay] not found