webForumDet fria alternativet

Sätta en array med foreach

Java

4 svar · 611 visningar · startad av erciz

Medlem sedan maj 20011 826 inlägg
Frågan#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!

253 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)