erstellt 05.09.99; überarbeitet 12.06.00; übersetzt 31.07.03, 13.01.04; überarbeitet 19.01.04, 29.06.04, 06.07.04, 11.10.06; © Copyright 2003 - 2006 Deutsche Übersetzung Heinrich Gailer

Kapitel 29 Programmieraufgaben

Aufgabe 1 — Anrede vergeben

Schreiben Sie ein Programm, das den Anwender nach seinem Namen fragt und dann den Namen zusammen entweder mit "Ms." oder "Mr." ausgibt, je nachdem ob der Name weiblich oder männlich ist. Angenommen, dass die einzigen weiblichen Namen

und, dass die einzigen männlichen Namen

sind. Alle anderen Namen werden ohne Anrede ausgegeben. Das Programm setzt seine Schleifendurchläufe solange fort, bis der Anwender die Eingabe-Taste drückt, ohne zuerst etwas einzugeben.

C:\>java Anrede
Geben Sie einen Namen ein:
Amy Johnson
Ms. Amy Johnson

Geben Sie einen Namen ein:
Fred Smith
Mr. Fred Smith

Geben Sie einen Namen ein:
Zoltan Jones
Zoltan Jones

Geben Sie einen Namen ein:

C:\>

Nehmen Sie das Beispielprogramm aus Kapitel 18 als Ausgangsbasis.

Zurück zum Inhaltsverzeichnis.


Aufgabe 2 — Dokumentation drucken

Schreiben Sie ein Programm, das Zeilen einliest und nur die Zeilen ausgibt die mit "//" beginnen. Wenn eine Java Quelldatei als Input verwendet wird, gibt das Programm die Zeilen aus, die das Programm beschreiben.

C:\>java Stripper < Hello.java

// Hello World Programm
// geschrieben von Elmer

// Hier steht die main Methode:

C:\>

Betrachten Sie das Kapitel Datei-Input, wenn Sie nicht mehr wissen, was die Kommandozeile macht.

Zurück zum Inhaltsverzeichnis.


Aufgabe 3 — Eine bessere Dokumentationsausgabe

Schreiben Sie ein Programm, das Zeilen einliest und nur die folgenden Zeilen ausgibt:

  1. Zeilen, die mit "//" anfangen sind Output.
  2. Zeilen, die mit "/*" anfangen sind Output.
  3. Zeilen, die mit "*/" anfangen sind Output.
  4. Alle Zeilen zwischen denen, die mit "/*" und "*/" anfangen sind Output.

Verwenden Sie dafür eine boolesche Variable, die auf true gesetzt wird, wenn "/*" angetroffen wird und auf false gesetzt wird, wenn "*/" angetroffen wird. Geben Sie die Zeilen aus, wenn die Variable true ist.

Hinweis: Dieses Programm hat ein großes Problem, da legale Kommentare überall in der Zeile mit "/*" beginnen und überall in einer Zeile mit "*/" enden können. Ein Quellprogramm könnte einen Kommentar haben, der mit "/*" am Anfang einer Zeile beginnt und mit "*/" am Ende einer Zeile schließt. Unser Programm ( wie beschrieben) wird dieses Ende des Kommentars nicht finden und fortfahren Zeilen auszugeben. Ein besseres Programm (wesentlich schwieriger zu schreiben) würde die Kommentare in der Quelldatei finden, ganz egal wo sie beginnen oder enden. Wenn Sie sich entschließen das zu tun, werden Sie Stringmethoden brauchen, die in diesem Kapitel nicht besprochen wurden.

Zurück zum Inhaltsverzeichnis.


Aufgabe 4 — Echo Namen

Schreiben Sie ein Programm, das den Anwender nach dem Vornamen und Nachnamen fragt. Dann den Vornamen, so wie er eingegeben wurde, ausgibt und den Nachnamen in Großbuchstaben ausgibt.


C:\>java NameEcho
Geben Sie Ihren Namen ein:
Sherlock Holmes

Sherlock HOLMES

C:\>

Dazu müssen Sie die Dokumentation der Stringklasse betrachten und Methoden verwenden, die in diesen Aufzeichnungen nicht behandelt wurden:

Da diese Methoden eine Ausnahme auslösen, muss Ihre main() Methode mit

public static void main ( String[] args )
                               throws IOException, StringIndexOutOfBoundsException
beginnen.

Zurück zum Inhaltsverzeichnis.


Aufgabe 5 — charAt()

Schreiben Sie ein Programm in dem der Anwender einen String eingibt und das Programm ihn ein Zeichen pro Zeile auf den Bildschirm ausgibt:


C:\>java EinZeichenProZeile
Geben Sie einen String ein:
Octopus

O
c
t
o
p
u
s

Sie werden dafür die folgenden Methoden der Klasse String brauchen:

public char charAt( int index ) throws  StringIndexOutOfBoundsException
Diese Methode gibt das Zeichen zurück, das sich an der Stelle index des Strings befindet.

Zurück zum Inhaltsverzeichnis.


Ende der Aufgaben