Die Aufgaben setzen voraus, dass Sie das Telefonbuchbeispiel in diesem Kapitel gelesen haben. Alle Programmieraufgaben sind Modifikationen dieses Programms. Beginnen Sie damit, in dem Sie dieses Programm nach Notepad kopieren.
Modifizieren Sie das Programm, so dass es den Anwender nach der Person fragt, die gesucht werden soll:
Name? Violet Smith Die Telefonnummer ist: (312) 223-1937 Name? James Barclay Die Telefonnummer ist: (418) 665-1223 Name? Scott Eccles Namen nicht gefunden Name? quit Good-bye
Natürlich, der Anwender muss den Namen exakt eingeben, damit
eine Übereinstimmung gefunden werden kann.
Vereinfachen Sie die Dinge etwas, in dem Sie die toUpperCase()
Methode der Klasse String
verwenden, um den zu findenden Namen und
jeden Namen des Arrays in Großbuchstaben zu konvertieren, bevor auf Gleichheit getestet wird.
Jetzt muss der von Anwender eingegebene Name nicht mehr exakt
mit der Groß- und Kleinschreibung übereinstimmen.
Zurück zum Inhaltsverzeichnis.
Es ist umständlich, dass der Anwender den vollständigen Namen eingeben muss.
Modifizieren Sie die TelefonEintrag
-Klasse, so dass sie
vorname
,
name
,
und telefon
enthält.
Jetzt fragt das Programm sowohl nach dem Namen als auch nach dem Vornamen.
Wenn der Anwender nur den Namen eingibt,
geht das Programm durch das gesamte Array und gibt jede
Übereinstimmung aus.
Wenn der Anwender sowohl den Namen als auch den Vornamen eingibt,
wird das Programm die erste Übereinstimmung ausgeben,
dann stoppen.
Name? Smith Vorname? Violet Die Telefonnummer ist: (312) 223-1937 Name? Smith Vorname? John Smith: (812) 339-4916 Violet Smith: (312) 223-1937 Willoughby Smith (312) 992-8761 Name? quit Good-bye
Um Ihr Programm voll zeigen zu können, sollten Sie die Größe des Arrays erweitern und mehr Namen und Telefonnummern hinzufügen.
Zurück zum Inhaltsverzeichnis.
Modifizieren Sie das Programm, so dass es mit einem
Array umgehen kann, das null
in einigen Slots hat.
Ändern Sie jetzt das Programm, so dass der Anwender die Wahl
zwischen drei Aktionen hat:
Um dem Array einen neuen Namen und eine neue Telefonnummer hinzufügen,
suchen Sie zuerst nach einem Slot der null
enthält.
Konstruieren Sie dann ein neues TelefonEintrag
-Objekt
und weisen Sie dessen Referenz diesem Slot zu.
Wenn kein Slot null
enthält,
melden Sie einen Fehler
(aber das Programm wird nicht verlassen).
(Einfache Methode:) Um einen Namen zu löschen,
suchen Sie zuerst dessen Slot, weisen Sie dann
diesem Slot null
zu.
(Das vorher durch diesen Slot referenzierte TelefonEintrag
-Objekt
wird vom Garbage Collector eingesammelt werden.)
Wenn der zu löschende Name sich nicht im Array befindet,
melden Sie einen Fehler.
(Bessere Methode:)
So wie es jetzt steht muss das Programm mit einem Array umgehen,
das überall null
-Werte in seinen Slots verstreut haben kann.
Das ist ungünstig und für ein großes Array ineffizient.
Es ist eine bessere Idee das Array organisiert zu halten,
so dass alle null
-Werte zusammen am Ende sind.
Wenn jetzt das Array durchsucht wird, signalisiert der erste
null
-Wert das Ende brauchbarer Daten und die Suche stoppt.
Um einen Namen und die Telefonnummer von einem solchen Array
zu löschen, suchen Sie zuerst den Slot des Namens.
Wenn der zu löschende Namen sich nicht im Array befindet,
melden Sie einen Fehler.
Kopieren Sie die Referenz des letzen Slots, der nicht null
ist,
in den Slot des zu löschenden Namens.
Setzen Sie dann den letzten Slot, der nicht null
ist, auf null
.
Jetzt ist das gelöschte TelefonEintrag
-Objekt Garbage
und das ganze Array hat immer noch alle null
-Werte am Ende.
Zurück zum Inhaltsverzeichnis.
Ende der Aufgaben