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 desnumbersArrays zeilenweise auf der Konsole ausgeben - Die Methode
printLastThreeElements()soll die letzten drei Elemente desnumbersArrays zeilenweise auf der Konsole ausgeben. Du kannst davon ausgehen, dassnumbersimmer mindestens drei Elemente hat. sum()soll alle Elemente desnumbersArrays addieren und alsdoubleWert zurückgebenmax()soll die größte Zahl ausnumbersfinden und zurückgeben. Fallsnumbersleer ist, soll-Double.MAX_VALUEzurückgegeben werden. (Das ist die kleinstmögliche Zahl die eindoubledarstellen kann.)-
add(Vector otherVector)soll elementweise die Zahlen vonnumbersmit den Zahlen aus demnumbersArrays ausotherVectoraddieren. Das Ergebnis soll als neueVectorInstanz zurückgegeben werden.Beispiel: Zwei Vektoren mit den
numbersArrays{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
numbersArrays 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
numbersverändert: Du solltest hier nirgendwonumbers[i] = ...stehen haben! - Indexfehler in der
forSchleife 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