2016-04-05 4 views
3

ich fragen, was der Unterschied zwischen diesen Schleifen in 2D-Arrays ist:die Differenz zwischen 2D-Array

for (int r = row - 1, c = column - 1; r >= 0 && c >= 0; r--, c--) { 
    ... 
} 


for(int r=row-1;r>=0;r--){  
    for(int c=column-1;c>=0;c--){ 
     ... 
    } 
} 

Antwort

3
for (int r = row - 1, c = column - 1; r >= 0 && c >= 0; r--, c--) 

Das erste Beispiel ist eine Schleife, die jeden Zyklus sowohl r und c dekrementiert, was bedeutet, dass Die Indizes r und c zeichnen eine Diagonale ab array[row-1][column-1]. enter image description here

for(int r=row-1;r>=0;r--){ 
    for(int c=column-1;c>=0;c--){ 

Das zweite Beispiel wird eine Schleife für die Spalten für jeden Index der Zeile, so wird es allearray[r][c] die Indizes zuzugreifen
enter image description here

+0

Dank viel! Der Grund, warum ich diese Frage gestellt habe, ist, dass ich ein Schachspiel mache, die Schleife, die ich benutzt habe (int r = Zeile-1, c = Spalte-1; r> = 0 & &c >=0; r-, c-) dient zur Überprüfung der linke Seite diagonales Schach, aber wie man eine Schleife schreibt, die rechte Seite Diagonale überprüfend, habe ich versucht (int r = Reihe + 1; c = Spalte-1; r> = 0 &&c>=0; r -; c--) aber ich doesn ' t wrok, Ursache außerlande Ausnahme –

1

Die erste iteriert für n mal, wobei n ist der kleinste von row und column. Die zweite iteriert für m mal, wobei mrow * column ist. Das ist

Math.min(row, column) 

und

row * column 

sind.

3

Ich nehme an, Sie fragen nach dem Unterschied zwischen einer einzelnen äußeren Schleife und einer verschachtelten Schleife. Der Unterschied besteht darin, dass die einzelne Schleife über die Diagonale des 2D-Arrays und die verschachtelten Schleifen mit jedem Index des Arrays iteriert. wenn es zum Beispiel sind 6 Zeilen und 4 Spalten dann:

for (int r = row - 1, c = column - 1; r >= 0 && c >= 0; r--, c--) { 
    System.out.println(r + " " + c); 
} 

nachgeben:

5 3 
4 2 
3 1 
2 0 

Während der verschachtelten Schleife

for(int r=row-1; r>=0; r--) { 
    for(int c=column-1; c>=0; c--) { 
     System.out.println(r + " " + c); 
    } 
} 

ergeben würde

5 3 
5 2 
5 1 
5 0 
4 3 
4 2 
4 1 
4 0 
3 3 
3 2 
3 1 
3 0 
2 3 
2 2 
2 1 
2 0 
1 3 
1 2 
1 1 
1 0 
0 3 
0 2 
0 1 
0 0 
Verwandte Themen