For-Each Schleife

Mit dem Laden des Videos akzeptierst du die Datenschutzerklärung von YouTube. Wenn du die Menge an Daten reduzieren möchtest, die YouTube von dir sammelt, solltest du dich vorher aus deinem YouTube-Account ausloggen, das Speichern von Cookies für das Google-Ads-Programm deaktivieren und/oder Cookies im Browser blockieren.
YouTube immer automatisch ladenInhaltsverzeichnis
Als Text lesen
Folgenden Programmcode hast du bisher sicher schon das ein oder andere Mal so oder so ähnlich gesehen:
Die Schleife iteriert durch das Array elementweise. Vielleicht hast du dich bereits gefragt, ob das nicht irgendwie schöner geht. Die überraschende Antwort: Ja! Mit einer for
each Schleife:
Eine for
each Schleife ist eine Kurzschreibweise für eine for
Schleife, bei der durch alle Elemente von links nach rechts iteriert wird, und der Index des aktuell durchlaufenen Elements irrelevant ist.
for
each Schleifen funktionieren in Java nicht nur für Arrays, sondern auch für viele weitere Datenstrukturen.
Für unser Beispiel lässt sich die for
each Schleife folgendermaßen lesen:
"Für jedes Element s
aus array
, mache ..."
Achtung!
Eine for
each Schleife ist nicht gleichmächtig zu einer for
Schleife.
Dinge die mit einer for
each Schleife nicht so einfach gehen:
- Ein Array rückwärts durchlaufen
- Jedes zweite Element auf der Konsole ausgeben
- Für jedes Element die Position im Array ausgeben
- Alle Elemente ab dem vierten Element ausgeben
Gegeben ist folgende Vector
Klasse. Falls du nicht weißt, was ein Vektor ist, ist das nicht schlimm. Wir verstehen hier einen Vektor lediglich als eine Klasse, die ein Array aus Zahlen enthält.
Deine Aufgabe ist es, einige Methoden in der Klasse zu implementieren. Verwende dabei immer entweder eine for
Schleife oder, falls (einfach) möglich, eine for
each Schleife.
- Die Methode
printAllElements()
soll alle Elemente desnumbers
Arrays zeilenweise auf der Konsole ausgeben - Die Methode
printLastThreeElements()
soll die letzten drei Elemente desnumbers
Arrays zeilenweise auf der Konsole ausgeben. Du kannst davon ausgehen, dassnumbers
immer mindestens drei Elemente hat. sum()
soll alle Elemente desnumbers
Arrays addieren und alsdouble
Wert zurückgebenmax()
soll die größte Zahl ausnumbers
finden und zurückgeben. Fallsnumbers
leer ist, soll-Double.MAX_VALUE
zurückgegeben werden. (Das ist die kleinstmögliche Zahl die eindouble
darstellen kann.)-
add(Vector otherVector)
soll elementweise die Zahlen vonnumbers
mit den Zahlen aus demnumbers
Arrays ausotherVector
addieren. Das Ergebnis soll als neueVector
Instanz zurückgegeben werden.Beispiel: Zwei Vektoren mit den
numbers
Arrays{1.0, 2.0, 3.0}
und{4.0, 5.0, 6.0}
ergeben in Summe einen neuen Vektor{5.0, 7.0, 9.0}
.Beachte, dass sich die Werte in den
numbers
Arrays der beiden Objekte nicht ändern dürfen! Du musst also dein Ergebnis als Kopie speichern.Du kannst davon ausgehen, dass beide Vektoren immer gleich lang sind.

Mit dem Laden des Online Editors akzeptierst du die Datenschutzerklärung von JDoodle, einem Produkt der Nutpan pty Ltd (Australien). JDoodle verwendet die Tools reCAPTCHA und Google Analytics, wodurch Daten an Google übertragen werden können. Ich habe leider keinen Einfluss auf diesen Prozess. Du kannst Google Analytics über ein Browserplugin deaktivieren.
Online Editor immer automatisch ladenDas Ergebnis des gegebenen Beispiels sollte folgende Ausgabe erzeugen:
a: 1.0 2.0 3.0 -1.0 Letzte drei Elemente von a: 2.0 3.0 -1.0 Summe aller Elemente in a: 5.0 Maximales Element in b: -0.5 Ergebnis von a + b 0.5 -8.0 -3.0 -4.33
Häufige Fehlerquellen
- Werte von
numbers
verändert: Du solltest hier nirgendwonumbers[i] = ...
stehen haben! - Indexfehler in der
for
Schleife inprintLastThreeElements()
- In
max()
nicht beachtet, dass die größte Zahl in einem Array auch negativ sein kann, oder das Array auch komplett leer sein kann - In
add()
keinen neuen Vektor oder kein neues Array erzeugt - Indexfehler in
add()
: Es soll elementweise addiert werden, alsoresult[i] = array1[i] + array2[i]
Lösungsvorschlag printAllElements()
Lösungsvorschlag printLastThreeElements()
Lösungsvorschlag sum()
Lösungsvorschlag max()
Lösungsvorschlag add(Vector otherVector)
Lösungsvorschlag Gesamt
Interesse an einer Zusammenarbeit?
- Entwicklung von Desktopanwendungen
- Datenanalyse & Machine Learning
- Automatisierte Datenverarbeitung