webForumDet fria alternativet

Sätta en array med foreach

4 svar · 607 visningar · startad av erciz

ercizMedlem sedan maj 20011 880 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 20005 832 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 20006 147 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 20005 832 inlägg
#4

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

ercizMedlem sedan maj 20011 880 inlägg
#5

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

Genererad på 362 ms · cache AV · v20260730165559-full.f96bc7eb