Opiskelen javan alkeita ja edessäni on lyhyt esimerkki sisäkkäisistä (allekkaisista) for-lauseista.
Olen yrittänyt miettiä miten java kääntää järjestyksessä for-lauseet, mutta ajatus tuntuu hankalalta. esim:
for(x=0; x
Olen yrittänyt miettiä miten java kääntää järjestyksessä for-lauseet, mutta ajatus tuntuu hankalalta. esim:
for(x=0; x
Vastaukset 7
Vanhimmat
Hi newbie,
My Finnish is not very good, so I'll reply to you in English...
If you format you're programming following standard guidelines, you'll get :
for (x = 0 ; x < 3; x)
for (y = 0; y < 2; y)
System.out.println(x " " y);
As you can see, first the inner-loop (with the "y") is processed, when this is ready, x is incremented (the outer-loop) and the inner-loop starts all over again. This happens until the outer-loop stops.
If you want to get you're expected output, you could write something like :
for (x = 0, y = 0 ; x < 3; x, y) {
if (y > 1)
y = 0;
System.out.println(x " " y);
}
Hi newbie,
My Finnish is not very good, so I'll reply to you in English...
If you format you're programming following standard guidelines, you'll get :
for (x = 0 ; x < 3; x)
for (y = 0; y < 2; y)
System.out.println(x " " y);
As you can see, first the inner-loop (with the "y") is processed, when this is ready, x is incremented (the outer-loop) and the inner-loop starts all over again. This happens until the outer-loop stops.
If you want to get you're expected output, you could write something like :
for (x = 0, y = 0 ; x < 3; x, y) {
if (y > 1)
y = 0;
System.out.println(x " " y);
}
Kiitos Mikki avustasi!
Eli tulkitsen asian nyt näin:
Koko homma riippuu alemmasta for-lauseesta eli tässä tapauksessa y:stä. Kun sen jatkamisehto saa arvokseen epätoden, x:n lisätään 1 ja pyöritetään y:tä taas kunnes se on epätosi ja x:n lisätään taas 1.
X saa tietenkin samoja arvoja y:n pyöriessä (ei siis kosketa siihen kun toinen looppi on kesken). Y:tä pyöritetään vielä kerran kunnes se loppuu ja tutkitaan, että ylemmänkin for-toiston ehto olisi epätosi eli 3 on suurempi kuin x, tällöin koko paska loppuu siihen. Testasin tätä myös muilla numeroarvoilla ja tulos oli yhdemukainen päättelyihini verrattuna.
Aikaisemmin ajattelin, että for-lauseet suoritettaisiin vuorotellen tai ikään kuin yhtä aikaa, mutta se ei toiminut. Minusta on hankalaa ajatella tässä samoin kuin kone tai on ainakin hankalaa löytää sama ajattelutapa.
Kiitos Mikki avustasi!
Eli tulkitsen asian nyt näin:
Koko homma riippuu alemmasta for-lauseesta eli tässä tapauksessa y:stä. Kun sen jatkamisehto saa arvokseen epätoden, x:n lisätään 1 ja pyöritetään y:tä taas kunnes se on epätosi ja x:n lisätään taas 1.
X saa tietenkin samoja arvoja y:n pyöriessä (ei siis kosketa siihen kun toinen looppi on kesken). Y:tä pyöritetään vielä kerran kunnes se loppuu ja tutkitaan, että ylemmänkin for-toiston ehto olisi epätosi eli 3 on suurempi kuin x, tällöin koko paska loppuu siihen. Testasin tätä myös muilla numeroarvoilla ja tulos oli yhdemukainen päättelyihini verrattuna.
Aikaisemmin ajattelin, että for-lauseet suoritettaisiin vuorotellen tai ikään kuin yhtä aikaa, mutta se ei toiminut. Minusta on hankalaa ajatella tässä samoin kuin kone tai on ainakin hankalaa löytää sama ajattelutapa.
Tuli sekoiltua englanninkielisen ja suomenkielisen version kanssa ja suomenkielinen postautui kahdesti. joudut nyt tyytymään suomenkieliseen. Toivottavasti saat ajatuksistani selvää.
Kannattaa kirjoittaa myös sitä koodia silleen loogisesti niin sen kulkua on myös helpompi seurata. Tyyliin näin.
int x,y;
for(x=0;x
Eli tabulaattori ei toimi, eli tätä tarkoitin
for(blaablaa)
{
_______for(blaablaablaa)
_______{
___________System.out....
_______}
}