Schreibe eine Klassenmethode speekLikeAChinese(String s)
, die einen übergebenen
java.lang.String
auf dem Bildschirm bringt, aber den Buchstaben "r" als "l" ausgibt.
Sprachwissenschaftler sind der Ansicht, dass auch nach dem Entfernen von
Vokalen der Text noch lesbar bleibt. Schreibe eine Klassenmethode String removeVovel(String
s)
, die aus einem
java.lang.String
s
die Vokale entfernt. Stimmt es, was die Wissenschaftler sagen?
Die Quersumme einer Zahl bildet man durch die Addition jeder Ziffer der Zahl. Wenn die Zahl etwa 10938 lautet, so ist die Quersumme 1+0+9+3+8 = 21.
int sumOfTheDigits(long value)
, die
die Quersumme einer Zahl berechnet.int sumOfTheDigits(String value)
dazu, die die Ziffern in einem
java.lang.String
annimmt.Ein Morse-Funkspruch besteht aus kurzen und langen Symbolen, die mit .
und -
angedeutet sind. Jeder Buchstabe ist durch ein Leerzeichen getrennt.
Kopiere die folgende Definition in ein Programm, welches eine Zeichenkette in das
Morse-Alphabet umsetzt.
// A .- N -. 0 ----- // B -... O --- 1 .---- // C -.-. P .--. 2 ..--- // D -.. Q --.- 3 ...-- // E . R .-. 4 ....- // F ..-. S ... 5 ..... // G --. T - 6 -.... // H .... U ..- 7 --... // I .. V ...- 8 ---.. // J .--- W .-- 9 ----. // K -.- X -..- // L .-.. Y -.-- // M -- Z --..
Nicht bekannte Zeichen sollen übersprungen werden.
Bei der so genannten Cäsar-Verschlüsselung verschiebt man jedes Zeichen um vier Positionen im Alphabet, das heißt, aus A wird D, aus B wird E und so weiter. Am Ende des Alphabets beginnen wir wieder von vorne und so ergibt X->A, Y->B,Z->C.
String caesar(String s)
, die die
Verschlüsselung vornimmt, und String decaesar(String s)
, die sie
wieder zurücknimmt. Eine Klassenmethode roman2Decimal(String s)
soll eine Zeichenkette
s
vom römischen Zahlensystem ins dezimale übersetzen. Die Zahlzeichen
mit der Bedeutung sind:
M = 1000 | D = 500 | C = 100 | L = 50 |
X = 10 | V = 5 | I = 1 |
Ist auf dem Bildschirm für einen ganzen Text nicht mehr viel Platz, so wird der Text gerne mit ... abgekürzt. Wir finden diese Punkte zum Beispiel im Explorer oder im E-Mail-Programm.
String abbreviate(String s,
int len)
, die einen gegebenen
java.lang.String
mit ... abkürzt. Die entstehende Zeichenkette soll
dabei nicht länger als len
Zeichen lang werden. abbreviate("Pimpels are ugly", 6)
ergibt
"Pim...". Eine Klassenmethode printUnderline(String s, String underline)
soll die
Zeichenkette underline
in s
unterstreichen. Dazu sollen
zwei Ausgabezeilen aufgebaut werden, etwa so:
Man wird nicht dadurch besser, dass man andere schlecht macht. ------
Aus einem Wörterbuch soll ein Computer per Zufall ein Wort auswählen. Wir sollen dieses Wort erraten und dürfen pro Runde genau einen Buchstaben wählen.
String onlyNumbers(String)
, die aus einem
beliebigen String nur Zahlen, +, - und Dezimaltrenner (also . und ,) zurückgibt.
Beispiel onlyNumbers("ABC 12,324 ZB")
ergibt "12,324".double stringDoubleToDouble(String)
,
die eine Zeichenkette
in ein double
konvertiert. Als Dezimaltrenner sind ,
und
auch .
erlaubt.double toFrequence(String)
so zu
implemtieren, dass toFrequence("12,3 Mhz")
das
Ergebnis 12.3 vom
Typ double
liefert.Schreibe ein Java-Programm, welches untersucht, ob die als Kommandozeilen-Argumente angegebenen Wörter Palindrome sind. Ein Palindrom ist ein Wort, das sich von vorne wie von hinten gleich liest, etwa Otto oder auch 121.
boolean isPalindrom(String s)
.
isPalindromCaseInsensitive(String
s)
, sodass es unabhängig von der Groß-/Kleinschreibung wird. isPalindromSpaceIrrelevant(String
s)
.Schreibe eine Klassenmethode String compressSpace(StringBuilder s)
, die
mehr als zwei Leerzeichen in dem übergebenen
java.lang.StringBuilder
zu einem Leerzeichen zusammenschmilzen lässt.
Peter Pan sucht eine Methode zum Pattern Matching. Sie soll, ähnlich wie
strstr()
in C, in einem String nach einem Suchstring suchen. Der Suchstring
soll dabei aber "*" (Ersatz für mehrere Zeichen) sowie "?" enthalten.
Nun erhält er eine Lösung, doch leider
in C. :-( Wer kann Peter Pan helfen?
Die Pattern/Matcher erlauben nicht nur das Suchen und Ersetzen, sondern bieten noch weitere interessante Möglichkeiten. Interessant vom Matcher sind die Methoden appendReplacement() und appendTail(). Evaluiere, ob man einen http://en.wikipedia.org/wiki/Pig_Latin-Konverter mit diesen speziellen Methoden einfach schreiben kann.
Schreibe eine Klasse WordWrapper
mit einer statischen Methode
String wrapWord(String s, int len)
, die eine Zeichenkette s
in kleine Teilzeichenketten der Länge len
zerlegt und mit Return getrennt
wieder zurückgibt. Mit einem String
"Der Sehnsucht entgegen, sie erleben. Wer kann das schon. Den Träumen entgegen,
"+
"sie erleben. Wer macht das schon. Den Gefühlen entgegen, sie erleben.
Wer wagt das schon. "+
"Der Liebe entgegen, sie erleben. Wer darf das schon."
wird zum Beispiel bei einer Zeilenlänge von 20 folgender String zurückgegeben:
Der Sehnsucht
entgegen, sie
erleben. Wer kann
das schon. Den
Träumen entgegen,
sie erleben. Wer
macht das schon.
Den Gefühlen entgegen,
sie erleben. Wer
wagt das schon. Der
Liebe entgegen, sie
erleben. Wer darf
das schon.
Obwohl die Klasse
java.lang.String
eine ganze Reihe nützlicher Methoden bietet, ist sie doch nicht ohne Schwachstellen.
So fehlt in der aktuellen Version des JDK beispielsweise eine Methode, die es erlaubt,
jedes Auftreten eines vorgegebenen Teilstrings gegen einen anderen auszutauschen.
Zwar gibt es die Methode replace()
aus
java.lang.String
,
diese erlaubt es aber lediglich, ein einzelnes Zeichen gegen ein anderes auszutauschen.
Schreibe eine Methode replaceString()
, die in einem gegebenen String
alle Vorkommen eines Strings s1
gegen einen String s2
austauscht. s1
und s2
dürfen dabei beliebig (auch unterschiedlich)
lang sein.
Löse die Aufgabe einfaches Match.
Analysiere nachfolgendes Programmsegment:
double d = 12345.67890; DecimalFormat df = new DecimalFormat( "###,##0.00" ); System.out.println( df.format(d) );
Was macht die Klasse
java.text.DecimalFormat
?
Welche Formatierungsanweisungen sind erlaubt? Stelle eine Tabelle zusammen und belege
die Formatierungen mit einem Beispiel. Die Klasse
java.text.DecimalFormat
existiert nicht alleine für die Formatierung. Es gibt noch einige "Verwandte". Welche
sind das? Nenne Aufgabenbereiche, Unterschiede und Gemeinsamkeiten.