Lernpfad:Würfelspiel in Java/Mit Strings arbeiten

Aus Informatik-Box
Zur Navigation springen Zur Suche springen

Zeichenketten in Java

Im Gegensatz zu den Primitiven Datentypen wie byte, int oder boolean sind Zeichenketten in Java Objekte der Klasse String. Das bedeutete, dass jeder String Methoden besitzt, die auf ihm aufgerufen werden können.

String einText = "Hello, World!";
einText.length()         // 13
einText.toUpperCase()    // HELLO, WORLD!
einText.isEmpty()        // false
Icon Info.png


Hinweis Auf einem int können zum Beispiel keine Methoden aufgerufen werden, da Integer zunächst keine Objekte sind. Die Java Klassenbibliothek enthält aber auch für diese primitiven Datentypen eigene Klassen. Zum Beispiel die Klasse Integer. Sie enthält unter anderem hilfreiche Klassenmethoden zum Umgang mit Integern.


Strings formatieren

Zeichenketten müssen in Programmen sehr häufig zur Laufzeit des Programms aus variablen Inhalten zusammengesetzt werden. Am Ende des Würfelspiels könnte man zum Beispiel die Nachricht "Spieler 1 hat gewonnen" bzw. "Spieler 2 hat gewonnen" anzeigen lassen. Die Nummer des Spielers ist hier variabel, je nachdem, welcher Spieler gewonnen hat. Noch schöner wäre es, wenn zusätzlich der Name des Spielers angezeigt würde.

Um mit solchen Situationen umzugehen haben sich Zeichenketten mit besonderen Formatierungszeichen und die format-Methode etabliert. Für obige Situation könnte der String wie folgt aussehen:

String botschaft = "Spieler %d (%s) hat gewonnen";

Die Formatierungszeichen beginnen jeweils mit einem %. Das Zeichen %d steht für decimal number, das Zeichen %s für String. An Stelle des ersten Platzhalters soll also eine Zahl (in diesem Fall eine Ganzzahl), an Stelle des Zweiten eine Zeichenkette eingesetzt werden. Mittels format kann man nun beliebige Werte einfügen:

String.format(botschaft, 1, "Hannes"); // Spieler 1 (Hannes) hat gewonnen
String.format(botschaft, 2, "Johanna"); // Spieler 2 (Johanna) hat gewonnen
String.format(botschaft, 300, "Susanna"); // Spieler 300 (Susanna) hat gewonnen

Doch die Formatierungsmöglichkeiten gehen noch weiter als bloßes ersetzen. Soll zum Beispiel der Punktestand der Spieler als Rangliste angezeigt werden, dann müssen die Punktzahlen passend untereinander stehen (rechtsbündig). Dazu könnte man die Punktzahlen nach links mit Nullen auffüllen, bis alle Punktzahlen gleich viele Zeichen haben.

String eintrag = "%d. %12s: %06d";
String.format(eintrag, 1, "Tim", 1099);   // 1.         Tim: 001099
String.format(eintrag, 2, "Hannes", 100); // 2.      Hannes: 000100
String.format(eintrag, 3, "Johanna", 99); // 3.     Johanna: 000099

In diesem Beispiel enthält der String drei Platzhalter:

  1. %d erwartet wie oben eine Ganzzahl.
  2. %12s erwartet einen String und reserviert für diesen 12 Stellen. Ist die erhaltene Zeichenkette kürzer, dann werden so viele Leerzeichen eingefügt, dass insgesamt 12 Zeichen vorhanden sind.
  3. %06d ist wieder eine Ganzzahl, es sind 6 Zeichen vorgesehen, aber an Stelle eines Leerzeichens wird die Ziffer 0 zum Auffüllen genutzt.