***** Übungen: Java - Arrays ***** Java_30-Arrays-1: Array definieren, einfach Sie kennen einen Börsentrick, mit dem Sie den Wert Ihres Aktiendepots jeden Monat verdoppeln. Uns interessiert immer nur der Erste des Monats. Sie starten am 01.01.2014 mit 20 Euro. Am 01.04. zählen Sie Ihr Geld. 1) Wie viele Elemente enthält das Array? 2) Welchen Index hat das Element, das den 01.01.2014 repräsentiert? 3) Welchen Index hat das Element, das den 01.04.2014 repräsentiert? 4) Programmieren Sie ein int-Array mit den Werten zum jeweiligen Monatsanfang. (Die Werte werden nicht errechnet, sondern manuell angegeben.) 5) Geben Sie unter Verwendung der Arrayvariablen den Satz aus: "Zu Beginn hatte ich 20 Euro, am 01.04. habe ich 160 Euro." 6) (Fortgeschrittene) Sie möchten alle Werte in der Konsole untereinander ausgeben. Verwenden Sie eine for-Schleife. @@@ Java_30-Arrays-2: Array duplizieren 1. Erstellen Sie ein int-Array primzahlen[], das die ersten 5 Primzahlen enthält. 2. Definieren Sie ein neues Array primzahlenDuplikat[] und erstellen Sie dort eine "Kopie" des Arrays primzahlen[] (int[] primzahlenDuplikat = primzahlen). 3. Verändern Sie in primzahlen[] Werte und überprüfen Sie, ob diese sich in primzahlenDuplikat[] ebenfalls geändert haben. 4. Sie können ein Array bspw. "richtig" kopieren, indem Sie auf das Array die Methode clone() anwenden. Probieren Sie das aus und überprüfen Sie, ob nun tatsächlich zwei verschiedene Arrays existieren. @@@ Java_30-Arrays-3: Array mit Schleifen durchlaufen 1) Definieren Sie ein int-Array namens "tage" mit 365 Elementen. 2) Sorgen Sie mittels einer Schleife dafür, dass der Wert der Array-Elemente jeweils dem Index + 1 entspricht, also tage[0] = 1 tage[1] = 2 ... tage[364] = 365 3) Lassen Sie den Inhalt des Arrays mittels einer foreach-Schleife ausgeben. Sie müssten die Werte 1 bis 365 erhalten. 4) Lassen Sie sich eine Liste in folgendem Format ausgeben: 1 Tage haben 24 Stunden 2 Tage haben 48 Stunden 3 Tage haben 72 Stunden ... @@@ Java_30-Arrays-4: Mehrdimensionales Array - Kalender 1) Erstellen Sie ein zweidimensionales String-Array "januarKalender". Die erste Dimension enthält die 31 Tage, die zweite Dimension die Stunden jeden Tages (nämlich 24 pro Tag). Der Wert für alle Stunden gleich, nämlich "nichts" 2) Tragen Sie Ihre Termine ein: 1. Januar, 5. Stunde: "Aufstehen!!!" januarKalender[0][4] = "Aufstehen!!!!"; 1. Januar, 10. Stunde: "Mittagessen" 31. Januar, 23. Stunde: "Gute Nacht!" 3) Lassen Sie sich mithilfe einer Schleife die 24 Stunden des 1. Januar komplett ausgeben. 1. Januar, 0 Uhr: nichts 1. Januar, 1 Uhr: nichts ... 4) Lassen Sie sich mithilfe einer Schleife alle Tage des Januars wie in der vorigen Aufgabe ausgeben. 5) Das FBI will Ihren Kalender durchforsten! Löschen Sie alle Termine. @@@ Java_30-Arrays-5a: Array mit Objekten 1) Programmieren Sie die Klasse Rechnung: *LINK 16java/java30_arrays_bild_Rechnung.png LINK* 2) Erzeugen Sie 4 Objekte dieser Klasse (jeweils mit eigener Rechnungsnummer und eigenem Rechnungsbetrag). 3) Erstellen Sie ein Array "rechnungen", das diese 4 Objekte abspeichert. 4) Wenden Sie die Settermethoden auf ein Element an und verändern Sie die Rechnungsnummer und den Rechnungsbetrag. Lassen Sie sich beides über Gettermethoden ausgeben. @@@ Java_30-Arrays-5b: Array mit Objekten - Durchlaufen mit Schleife Durchlaufen Sie das Array rechnungen (letzte Aufgabe) mit einer Schleife. Geben Sie in einer Liste alle Rechnungsbeträge aus. Geben Sie in einer Liste alle Rechnungsnummern aus. Fortgeschrittene: Geben Sie den Durchschnitt aller Rechnungsbeträge aus. @@@ Java_30-Arrays-5c: Array mit Objekten - Abschlussübung Ihnen liegen die Bilder einiger Sammelkarten mit Fußballspielern vor. Wir wollen die Fußballspieler in Objekten abspeichern und diese Objekte in einem Array verwalten. 1) Erzeugen Sie eine Klasse "Fussballspieler" mit mindestens vier Attributen. Dabei sein muss der (Nach-)Name, ansonsten sind Sie frei (Tore, Pässe, Verein ...). 2) Erzeugen Sie ein Array, das diese Objekte verwaltet. 3) Lassen Sie eine Liste der Fußballspieler ausgeben, etwa in folgendem Format: Reus spielt bei Dortmund, kostet 12.5 Mio und hat 16 Tore geschossen. Goetze spielt bei Bayern, kostet 11.0 Mio und hat 10 Tore geschossen. … Zusatzaufgabe (schwierig!): 4) Lassen Sie die Durchschnittswerte berechnen (am besten in einer eigenen Methode; dies geht natürlich nicht in der Startklasse) und ergänzen Sie die Ausgabe von Aufgabe 3 um eine entsprechende Anmerkung für alle überdurchschnittlichen Eigenschaftswerte. Wenn ein Eigenschaftswert nicht über dem Durchschnitt liegt, wird keine Meldung ausgegeben. "Reus: Dortmund, Wert 12.5 Mio, 16 Tore. Liegt 3.5 Tore über dem Durchschnitt. Liegt 1.4 Mio Euro über dem Durchschnitt. Goetze: Dortmund, Wert 11.0 Mio, 10 Tore. 5) Mögliche weitere Aktivitäten: - Lassen Sie alle Spieler des SC Freiburg ausgeben (oder: alle Spieler, deren Wert über 10 Mio liegt o.ä.) - Ändern Sie den Transferwert eines Spielers auf 100 Mio. - Bauen Sie das gleiche System (Aufgaben 2-4) als ArrayList. Für den Schleifendurchlauf verwenden Sie eine foreach-Schleife. - Verwenden Sie die bekannten Methoden der ArrayList: --- Löschen Sie die ganze Liste. --- Löschen Sie den Fußballer mit dem Indexwert 1. --- Fügen Sie nachträglich einen neuen Fußballer hinzu. --- Fügen Sie nachträglich einen neuen Fußballer an der Indexposition 0 hinzu. --- @@@ Java_30-Arrays-6: Mehrdimensionales Array - Quader Sie möchten den Rauminhalt von Quadern vergleichen. Quader sind definiert durch Breite, Länge und Höhe. Wir denken in ganzen Zentimetern, d.h. wir haben ganzzahlige Maße. 1) Wir wollen alle möglichen Quader betrachten, deren Maße mindestens 1, maximal aber 5 entsprechen. Wie viele sind das? 2) Erstellen Sie ein dreidimensionales Array quader[][][], das den Rauminhalt aller möglichen Quader mit den in 1) angegebenen Einschränkungen enthält. 3) Über die Konsole kann der Benutzer Höhe, Breite und Tiefe eingeben. Als Ergebnis wird ihm unter Verwendung des Arrays(!) der korrekte Rauminhalt ausgegeben. 4) Sorgen Sie dafür, dass bei allen Quadern, die eine Tiefe von 1 haben, möglichst unauffällig ein falsches Ergebnis ausgegeben wird.