Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Array mit "foreach"-Schleife und nextInt (aus Scanner) beschreiben
Ich verstehe dein Problem nicht ganz, du hast die Lösung schon:
[Java]for (int i=0; i < zahlen.length; i++)[/Java] bedeutet,
dass am Anfang der Schleife die Varibale int i mit dem Wert 0 deklariert wird (int i=0; ),
dann gibt man die Vorrausetztung an, die vor jedem Durchlauf der Schleife überprüft wird und nur wenn die wahr ist (true) wird der Block der Schleife (alles innerhalb der {}-Klammern) durchgeführt (i < zahlen.length; ).
Als Letztes gibt man noch an nach jedem Schleifendurchlauf passieren soll ( i++) und fertig ist die for-Schleife.
Falls das nicht dein Problem war erläutere es bitte ein wenig besser
Im ersten Fall hat i einen Anfangswert von 0. Bei jedem Iterationsschritt wird de Wert um 1 erhöht, solange bis zahlen.length -1 erreicht ist. Diese Werte sind vom Inhalt der Arrays unabhängig.
Im zweiten Fall gehst du über das Array drüber und holst dir die Einträge. Die Werte sind dann vom Inhalt des Arrays abhängig.
Die foreach Schleife ist äquivalent zu:
Java:
int i = 0;
for(int x = 0; x < zahlen.length; x++){
i = zahlen[x];
//mach was mit i
}
Warum sollten sie das gleiche tun bei unterschiedlichem Code?
Schauen wir uns das an deinem Beispiel an: Du initialisierst ein Array der Länge 5, zu Beginn sind alle Werte des Arrays 0.
In der ersten Schleife zählst du nun von i=0 bis 4 (Länge des Arrays - 1) und greifst anschließend auf das i-te Element zu. Also erst auf das an Position 0, dann auf das auf Position 1usw..
In der zweiten Schleife führst du den Schleifen-Rumpf für jeden Wert deines Arrays einmal aus. Da alle Werte auf 0 stehen, greifst du in jedem Schleifendurchlauf später auf zahlen[0] zu ...
Ihr habt recht: ich bekomme mit i nur die Werte, die im Array "zahlen" stehen und nicht die Position der Elemente im Array.
Ich vermute, ich kann die "for-each"-Schleife nicht für den beabsichtigten Zweck nutzen.
Eigentlich wäre das hier ganz korrekt, da bei deinem Beispiel die Variable i auch außerhalb der Schleife existiert (klugs*****en ist erlaubt )
[Java]
for(int x = 0, int i; x < zahlen.length; x++){
i = zahlen[x];
//mach was mit i
}[/Java]