webForumDet fria alternativet

Sätta en array med foreach

4 svar · 607 visningar · startad av erciz

ercizMedlem sedan maj 20011 826 inlägg
#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();	
}
SPiNMedlem 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();
}
spangoMedlem 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.

SPiNMedlem sedan mars 20007 896 inlägg
#4

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

ercizMedlem sedan maj 20011 826 inlägg
#5

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

123 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
120 ms — hämta tråd, inlägg och bilagor (db)