Programmieren in Java: Einführung


Anhang A: Übungen

Dieses Buch ist unter einer Creative Commons-Lizenz lizensiert.


A.1 Aufgaben

Übung macht den Meister

Sie können die Lösungen zu allen Aufgaben in diesem Buch als ZIP-Datei erwerben.

  1. Entwickeln Sie eine öffentliche Klasse MyApplet und leiten Sie sie von java.applet.Applet ab. Überschreiben Sie die Methode paint() in der Art, dass beim Laden des Applets im Browser eine Meldung ausgegeben wird, dass der Anwender mit der Maus auf das Applet klicken soll.

  2. Erweitern Sie Ihre Klasse MyApplet aus Aufgabe 1 dahingehend, dass Mausklicks auf das Applet abgefangen werden. Erstellen Sie hierzu eine zweite öffentliche Klasse namens MyClicks. Erweitern Sie die Klasse MyApplet um eine Eigenschaft vom Typ MyClicks und weisen Sie der Referenzvariablen ein neues Objekt zu. Dieses Objekt soll informiert werden, wenn der Anwender mit der Maus auf die Applet-Oberfläche klickt. Legen Sie die Klassen MyApplet und MyClicks in unterschiedliche Pakete.

  3. Erweitern Sie Ihre Klasse MyClicks aus Aufgabe 2 dahingehend, dass Sie eine Eigenschaft vom Typ der Klasse MyApplet definieren. Erstellen Sie darüberhinaus eine öffentliche Methode innerhalb der Klasse MyClicks, die keinen Rückgabewert besitzt und einen Parameter vom Typ der Klasse MyApplet erwartet. Diese Methode soll die Eigenschaft der Klasse MyClicks auf den Wert setzen, der als Parameter an die Methode übergeben wird. Die Methode der Klasse MyClicks soll innerhalb der Klasse MyApplet aufgerufen werden, und zwar so, dass die Klasse MyApplet das Schlüsselwort this als Parameter an die Methode übergibt.

  4. Erweitern Sie Ihre Klasse MyApplet aus Aufgabe 3 dahingehend, dass Sie eine Eigenschaft vom Typ boolean definieren. Definieren Sie in der Klasse MyClicks aus Aufgabe 3 die Methode, die aufgerufen wird, wenn der Anwender eine Maustaste los lässt, in der Art, dass bei einem einfachen Mausklick die Eigenschaft vom Typ boolean in dem Objekt vom Typ MyApplet, auf das die einzige Eigenschaft der Klasse MyClicks verweist, auf den Wahrheitswert true gesetzt wird. Bei einem doppelten Mausklick soll die Eigenschaft auf den Wahrheitswert false gesetzt werden.

  5. Erweitern Sie Ihre Klasse MyApplet aus Aufgabe 4 dahingehend, dass die Methode paint() anhand der Eigenschaft vom Typ boolean die Meldung im Applet ausgeben soll, ob der letzte Mausklick des Anwenders ein einfacher oder doppelter Mausklick war. Die Meldung soll immer dann aktualisiert werden, wenn der Anwender Enter drückt.

  6. Entwickeln Sie ein Java-Applet, in das Sie mit java.awt.TextField ein Texteingabefeld setzen. Wenn der Anwender dreimal hintereinander den Buchstaben "a" in die Textbox tippt, soll die Hintergrundfarbe des Applets auf Rot gesetzt werden. Gibt der Anwender einen anderen Buchstaben ein, nachdem er bereits einmal oder zweimal "a" eingegeben hat, soll der Zählvorgang bei erneuter Eingabe von "a" wieder bei Null beginnen. Die statische öffentliche Eigenschaft in der Klasse java.awt.event.KeyEvent, die die Taste A repräsentiert, ist VK_A.

  7. Erweitern Sie Ihr in Aufgabe 6 entwickeltes Java-Applet dahingehend, dass bei dreimaliger Eingabe von "b" die Hintergrundfarbe des Applets auf Grün gesetzt wird. Der Buchstabe "b" muss dreimal hintereinander eingegeben werden, ohne dass eine andere Taste gedrückt werden darf. Die statische öffentliche Eigenschaft in der Klasse java.awt.event.KeyEvent, die die Taste B repräsentiert, ist VK_B.

  8. Entwickeln Sie eine Java-Application, in der Sie zwei Arrays vom Typ int anlegen. Legen Sie in jedes Array drei beliebige Zahlen hinein. Erstellen Sie dann eine for-Schleife, die abwechselnd die Zahl aus der ersten Stelle des ersten Arrays, die Zahl aus der ersten Stelle des zweiten Arrays, die Zahl aus der zweiten Stelle des ersten Arrays, die Zahl aus der zweiten Stelle des zweiten Arrays und so weiter auf die Standardausgabe ausgibt.

  9. Ändern Sie Ihre Lösung zu Aufgabe 8 dahingehend, dass Sie die for-Schleife durch eine while-Schleife ersetzen.

  10. Ändern Sie Ihre Lösung zu Aufgabe 9 dahingehend, dass Sie die while-Schleife durch eine do-while-Schleife ersetzen.

  11. Entwickeln Sie eine Java-Application, die eine vorgegebene Zeichenkette anhand von Leerzeichen teilt. So soll zum Beispiel die Zeichenkette "I love Java" in die Teilzeichenketten "I", "love" und "Java" zerlegt werden. Erstellen Sie hierzu ein Objekt der Klasse java.util.StringTokenizer und übergeben Sie im Konstruktor die Zeichenkette, die zerlegt werden soll. Rufen Sie anschließend für das Objekt die Methode hasMoreTokens() auf, die true zurückgibt, wenn im Objekt eine weitere Teilzeichenkette vorliegt, andernfalls false. Solange der Rückgabewert der Methode hasMoreTokens() true ergibt, rufen Sie für das Objekt vom Typ java.util.StringTokenizer die Methode nextToken() auf. Diese Methode gibt bei jedem Aufruf die nächste Teilzeichenkette als Objekt vom Typ java.lang.String zurück. Geben Sie alle Teilzeichenketten mit Hilfe der Methode println() auf die Standardausgabe aus.

  12. Entwickeln Sie eine Java-Application, die eine vorgegebene Zeichenkette in Form eines Objekts vom Typ java.lang.String in ein Array vom Typ char umwandelt und das Zeichen an der ersten und letzten Stelle im Array auf die Standardausgabe ausgibt. Speichern Sie hierzu eine beliebige Zeichenkette in einem Objekt vom Typ java.lang.String und rufen Sie für das Objekt die Methode toCharArray() auf. Diese Methode gibt die Zeichenkette im Objekt als Array vom Typ char zurück. Greifen Sie auf die erste und letzte Stelle in diesem Array zu und geben Sie sie auf die Standardausgabe aus. Arrays bieten eine Instanzvariable length vom Typ int an, die die Anzahl der im Array existierenden Stellen enthält. Verwenden Sie diese Instanzvariable, um auf die letzte Stelle im Array zuzugreifen und das dort gespeicherte Zeichen auf die Standardausgabe auszugeben.

  13. Entwickeln Sie eine Java-Application, die die größere Zahl von zwei vorgegebenen Kommazahlen gerundet auf die Standardausgabe ausgibt. Geben Sie hierzu zwei Kommazahlen vom Typ double an. Sie finden das Maximum von zwei Kommazahlen, indem Sie beide Kommazahlen als Parameter an eine statische Methode max() der Klasse java.lang.Math übergeben. Diese Methode gibt die größere Kommazahl als double zurück. Sie können diese Zahl runden, indem Sie sie der statischen Methode round() der Klasse java.lang.Math als einzigen Parameter übergeben. Der Rückgabewert dieser Methode ist long.