bemærk at der er forskel på:
int row = 0;
for(int row = 1; row < 8; row++)
og
int row = 0;
for(row = 1; row < 8; row++)
Det første eksempel kan ikke lade sig gøre, men det sidste kan godt.
I det første eksempel prøver jeg at definere row 2 gange. Det kan jeg ikke.
I det andet eksempel definere jeg først row, og så overskriver jeg den. Det kan jeg godt.
Din kode kan også skrives sådan her, vis du ikke skal bruge værdierne row og col uden for for-loopet:
public void run() {
int y,x;
for (int row = 0; row < 8; row++ ) {
for (int col = 0; col < 8; col++) {
y = col * 20;
x = row * 20;
add(new GRect(y, x, 20, 20));
}
}
}
}
Nu bliver værdierne først defineret i for loopet.
Den store forskel er, udover man spare 2 linjer, at col nu kun kan tilgås i det inderste loop, mens row kan tilgås i begge to, ingen af dem kan dog tilgås udefra.