Aufgabe: Aufgabenblatt ArrayList Seite 1 Aufgabe 1 – Verlosung Eine Lostrommel soll simuliert werden. Erstellen sie dazu eine Klasse LosTrommel, die als Attribut die Lose in einer ArrayList verwaltet. Folgende Methoden sind zu implementieren: • public LosTrommel(int nieten, int gewinne) legt die gewünschte Anzahl von Losen an. Die Nieten haben den Wert 0, die Gewinnlose werden von 1 an aufsteigend durchnummeriert. • int ziehe() throws EmptyException zieht ein Los aus der Tronmmel (s. Math.random() oder java.util.Random) • int getGewinne() gibt die Anzahl der noch vorhandenen Gewinne zurück • int getNieten() gibt die Anzahl der noch vorhandenen Nieten zurück Ermitteln sie durch Simulation, wie lange es durchschnittlich dauert, bis man einen Gewinn zieht, wenn sich in der Lostrommel 100 Lose befinden, von denen 10 Gewinne sind. Aufgabe 2 – Sortierte Liste Erstellen Sie ein Hauptprogramm, dem 2 Dateinamen als Parameter übergeben werden. Die Dateien enthalten je eine beliebig lange Liste mit Double-Zahlen, die nach Größe sortiert sind und gemischt werden sollen. Erstellen Sie dazu eine Klasse SortierteListe, die als Attribut eine ArrayList beinhaltet. Folgende Methoden sollen implementiert werden: • Ein Konstruktor public SortierteListe(String dateiname), der die Werte aus einer Datei liest. • Ein Konstruktor public SortierteListe(double[] arr). • Die toString-Methode, die die Liste ausgibt. • Eine Methode public merge(SortierteListe list). Diese Methode soll die aktuelle und die übergebene Liste mischen, wobei die Sortierung erhalten bleibt. Dies soll durch Einfügen der Elemente der übergebenen Liste an die passende Position der aktuellen Liste geschehen. Aufgabe 3 – Testen Schreiben Sie ein Hauptprogramm, dass die Funktionialität der Klasse SortierteListe testet. Sowohl die korrekte Funktion als auch die Behandlung aller Fehler soll sichergestellt werden. Zusatzaufgabe Erstellen Sie eine Klasse MyArrayList. Diese implementiert eine einfache Version von java.util.ArrayList mit Hilfe eines Feldes und folgenden Methoden: • MyArrayList(int initialSize) • int size(), gibt die Anzahl der belegten Elemente zurück • int get(int index), gibt das Element an Position index zurück • void add(int index, int elem) • void set(int index, int elem) Die initiale bzw. aktuelle Größe des Feldes soll bei Bedarf verdoppelt werden. WS 2015/16, Übung zum Javakurs für MATSE 18. November 2015