Part 3

Strings verwenden

Zunächst wiederholen wir, was wir bereits über Strings wissen, und lernen, wie man sie aufteilt. Im Folgenden erstellen wir eine String-Variable magicWord, die den Wert "abracadabra" enthält.

String magicWord = "abracadabra";

Das Übergeben eines Strings als Parameter an einen Druckbefehl (oder an eine Methode, die einen String als Parameter akzeptiert) erfolgt auf die vertraute Weise:

String magicWord = "abracadabra";
System.out.println(magicWord);
Beispielausgabe

abracadabra

Lesen und Ausgeben von Strings

Sie können einen String mit der Methode nextLine der Klasse Scanner einlesen. Das untenstehende Programm liest den Namen der nutzenden Person und gibt ihn aus:

Scanner reader = new Scanner(System.in);

System.out.print("Wie heißen Sie? ");
// Einlesen einer Zeile von der nutzenden Person und Zuordnung zur Variablen name
String name = reader.nextLine();

System.out.println(name);
Beispielausgabe

What's your name? Vicky Vicky

Strings können auch verkettet werden. Wenn Sie den +-Operator zwischen zwei Strings platzieren, entsteht ein neuer String, der die Kombination dieser beiden Strings darstellt. Achten Sie dabei auf Leerzeichen in Ihren Variablen!

String greeting = "Hi ";
String name = "Lily";
String goodbye = " und bis später!";

String phrase = greeting + name + goodbye;

System.out.println(phrase);
Beispielausgabe

Hi Lily und see you later!

Loading

String-Vergleiche und "Equals"

Strings können nicht mit dem Gleichheitsoperator == verglichen werden. Für Strings existiert ein separater Befehl equals, der immer an das Ende des Strings angefügt wird, den wir vergleichen möchten.

String text = "course";

if (text.equals("marzipan")) {
    System.out.println("Die Variable text enthält den Text marzipan.");
} else {
    System.out.println("Die Variable text enthält nicht den Text marzipan.");
}

Der equals-Befehl wird immer an das Ende des Strings angefügt, den wir vergleichen möchten: "String-Variable Punkt equals irgendein Text". Sie können auch eine String-Variable mit einer anderen String-Variable vergleichen.

String text = "course";
String anotherText = "horse";

if (text.equals(anotherText)) {
    System.out.println("Die beiden Texte sind gleich!");
} else {
    System.out.println("Die beiden Texte sind nicht gleich!");
}

Beim Vergleichen von Strings sollten Sie sicherstellen, dass die String-Variable einen Wert zugewiesen bekommen hat. Wenn sie keinen Wert hat, erzeugt das Programm einen NullPointerException-Fehler, was bedeutet, dass der Variablen kein Wert zugewiesen wurde oder dass sie leer ist (null).

Wie wir bereits gelernt haben, kann ein boolescher Wert durch Negation invertiert werden - !.

System.out.println("Stellen Sie sicher, dass der Text nicht 'cake' ist");
String text = "pie";

if (!(text.equals("cake"))) {  // true, wenn die Bedingung text.equals("cake") falsch ist
    System.out.println("es war nicht!");
} else {
    System.out.println("es war!");
}
Beispielausgabe

it wasn't!

Loading
Loading

Aufteilen eines Strings

Sie können einen String in mehrere Teile aufteilen, indem Sie die Methode split der Klasse String verwenden. Die Methode nimmt als Parameter einen String entgegen, der den Punkt angibt, um den herum der String aufgeteilt werden soll. Die split-Methode gibt ein Array der resultierenden Teile zurück. Im folgenden Beispiel wird der String um ein Leerzeichen herum aufgeteilt.

String text = "first second third fourth";
String[] pieces = text.split(" ");
System.out.println(pieces[0]);
System.out.println(pieces[1]);
System.out.println(pieces[2]);
System.out.println(pieces[3]);

System.out.println();

for (int i = 0; i < pieces.length; i++) {
    System.out.println(pieces[i]);
}
Beispielausgabe

first second third fourth

first second third fourth

Loading
Loading

Daten im festen Format

Das Aufteilen von Strings ist insbesondere dann hilfreich, wenn Daten einem festen Format folgen. Dies bezieht sich auf Daten, die einem vordefinierten Format entsprechen. Ein Beispiel dafür ist das Format der durch Kommas getrennten Werte (comma-separated values, csv), bei dem Kommas verwendet werden, um Werte zu trennen. Im Folgenden finden Sie ein Beispiel für Daten im CSV-Format, das Namen und Alter enthält. Die erste Spalte enthält Namen und die zweite Spalte Alter. Die Spalten sind durch ein Komma getrennt.

Beispieldaten

sebastian,2 lucas,2 lily,1

Angenommen, die nutzende Person gibt die obigen Daten zeilenweise ein und endet mit einer leeren Zeile.

Ein Programm, das die Namen und das Alter ausgibt, sieht folgendermaßen aus:

Scanner reader = new Scanner(System.in);

while (true) {
    String input = reader.nextLine();
    if (input.equals("")) {
        break;
    }

    String[] pieces = input.split(",");
    System.out.println("Name: " + pieces[0] + ", age: " + pieces[1]);
}
Beispielausgabe

sebastian,2 Name: sebastian, age: 2 lucas,2 Name: lucas, age: 2 lily,1 Name: lily, age: 1

Loading
Loading

Verwendung unterschiedlicher Textformate

In den obigen Beispielen haben wir Strings ausgegeben. Einige der Daten, die in einem festen Format vorliegen, können numerisch sein. In den zuvor verwendeten Daten, die Namen und Alter enthielten, war das Alter eine Ganzzahl.

Beispieldaten

sebastian,2 lucas,2 lily,1

Das Aufteilen eines Strings erzeugt immer ein Array von Strings. Wenn der Text in einem festen Format vorliegt, können wir davon ausgehen, dass die Daten an einem bestimmten Index immer von einem bestimmten Typ sind — z.B. im obigen Beispiel ist das Alter an Index 1 eine Ganzzahl.

Das folgende Programm berechnet die Summe der Alter in diesen fest formatierten Daten. Um die Summe zu berechnen, muss das Alter zuerst in eine Zahl umgewandelt werden (der bekannte Befehl Integer.valueOf()):

Scanner reader = new Scanner(System.in);
int sum = 0;

while (true) {
    String input = reader.nextLine();
    if (input.equals("")) {
        break;
    }

    String[] parts = input.split(",");
    sum = sum + Integer.valueOf(parts[1]);
}

System.out.println("Die Summe der Alter beträgt " + sum);
Beispielausgabe

sebastian,2 lucas,2 lily,1

Sum of the ages is 5

Wir können auf ähnliche Weise ein Programm schreiben, das den Durchschnitt der Alter berechnet:

Scanner reader = new Scanner(System.in);
int sum = 0;
int count = 0;

while (true) {
    String input = reader.nextLine();
    if (input.equals("")) {
        break;
    }

    String[] parts = input.split(",");
    sum = sum + Integer.valueOf(parts[1]);
    count = count + 1;
}

if (count > 0) {
    System.out.println("Age average: " + (1.0 * sum / count));
} else {
    System.out.println("No input.");
}
Beispielausgabe

sebastian,2 lucas,2 lily,1

Age average: 1.666

Loading
Loading
Loading
Sie haben das Ende dieses Abschnitts erreicht! Weiter zum nächsten Abschnitt: