Sätta en array med foreach

Java

4 svar · 620 visningar · startad av erciz

Medlem sedan maj 20011 826 inlägg
Trådstart#1

Jag gillar den nya foreach-konstruktionen.

Men om jag har förstått det rätt så går det bra att iterera över en array och läsa av den, men inte tvärtom att sätta den. För det fungerar inte för mig.

String[] suf = new String[tok.countTokens()];
for(String s : suf){
    s = tok.nextToken();	
}

Utan foreach funkar det bra:

String[] suf = new String[tok.countTokens()];
for(int i = 0; i<suf.length; i++){
    suf[i] = tok.nextToken();	
}
Medlem sedan mars 20007 896 inlägg
#2

Det fungerar inte riktigt så... När du kör en foreach-loop kopieras värdet från aktuellt index till den forsats-lokala variabeln s, så även om värdet på s ändras kommer inte värdet i arrayen att ändras.

Följande går ju bra:

String[] suf = new String[tok.countTokens()];
int counter = 0;
for (String s : suf) {
    suf[counter++] = tok.nextToken();
}
Medlem sedan juni 20008 205 inlägg
#3

... men däremot är det ett missbruk av konstruktionen att göra så, foreach ska bara användas för att läsa. Använd den vanliga for-varianten istället.

Medlem sedan mars 20007 896 inlägg
#4

Hehe, helt riktigt. Jag menade inte att det var ett bra sätt - enbart att det fungerar. ;)

Medlem sedan maj 20011 826 inlägg
#5

Jag har fått koll på det nu. Tack både SPiN och spango!

273 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
134 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)