studyklar
GdI 2 · Übungsblatt 4 · Aufgabe 1

Strings rückwärts verbinden: drei Werte, Array, varargs

Eine Methode ist ein benanntes Stück Programm, das man immer wieder aufrufen kann. Hier baut eine Methode aus Wörtern einen neuen Text: rückwärts, mit „-“ dazwischen, zu kurze Wörter fallen weg. Rechts steht jeweils das Programm des aktuellen Teils, die Zeilen zum Schritt sind hervorgehoben. Mit Weiter geht es Schritt für Schritt voran.

Die Aufgabe

Aufgabe 1

a) Schreiben Sie eine Methode, der man drei Strings als Parameter übergibt. Die Methode soll die drei Strings in umgekehrter Reihenfolge zu einem neuen String zusammensetzen, wobei zwischen den ursprünglichen Strings jeweils ein „-“ eingefügt werden soll. Strings, die kürzer als drei Zeichen sind, sollen komplett ignoriert werden. Übergibt man der Methode die Strings „eins“, „zwei“ und „drei“, so soll „drei-zwei-eins“ zurückgegeben werden. Aus den Strings „eins“, „z“, „drei“ wird „drei-eins“ (da die Länge von „z“ kleiner drei ist). Die Länge eines Strings s können Sie mit „length( )“ ermitteln: int laenge = s.length();

b) Es soll eine Methode geschrieben werden, die das Gleiche tut wie die obige Methode – allerdings für beliebig viele Wörter und mit einem String-Array als Parameter. Es sollen alle Wörter aus dem String-Array in der oben beschriebenen Weise zu einem neuen String zusammengesetzt werden.

c) Schreiben Sie die Methode aus a) neu, unter Zuhilfenahme der Methode aus b).

Anmerkung: Wenn man in b) anstelle eines String-Arrays ein vararg (String... werte) in die Parameterliste schreibt, dem man beliebig viele Werte übergeben kann, kann man diese Methode auch anstelle der beiden bisherigen Methoden verwenden. Man kann ihr sowohl beliebig viele Strings als auch ein String-Array übergeben.

Aus „eins“, „zwei“, „drei“ soll „drei-zwei-eins“ werden: dieselben Wörter in umgekehrter Reihenfolge, getrennt durch einen Bindestrich. Ein Wort mit weniger als drei Zeichen, wie „z“, wird übersprungen. Das Ergebnis ist ein neuer String; ausgegeben wird er erst im Hauptprogramm.

Merke: Gleiche Arbeit schreibt man nur einmal. Teil c) zeigt das: Die Methode für drei Strings rechnet nicht mehr selbst, sie ruft die Methode für das Array auf.
  1. a) Eine Methode für genau drei Strings, mit drei Abfragen.
  2. b) Eine Methode für ein Array, mit einer Schleife von hinten nach vorn.
  3. c) Die Methode aus a) neu, mit einem Aufruf der Methode aus b).

Der Kopf der Methode

    public static String rueckwaertsVerbunden(String s1, String s2, String s3) {

Die Methode steht in der Klasse, aber außerhalb von main. Ihr Kopf sagt alles, was ein Aufrufer wissen muss. public heißt: Sie ist auch von außerhalb der Klasse aufrufbar. static heißt: Sie gehört zur Klasse selbst, so wie main; main ruft sie direkt mit ihrem Namen auf. String vor dem Namen ist der Rückgabetyp: Die Methode liefert am Ende einen String zurück.

In den runden Klammern stehen die Parameter: drei Variablen s1, s2, s3 vom Typ String. Beim Aufruf bekommen sie die übergebenen Werte, bei „eins“, „z“, „drei“ also s1 = "eins", s2 = "z", s3 = "drei".

Aus Vorlesung 4, Folie 3 und 4 („Methoden mit Parametern“, „Methoden mit Rückgabe von Werten“): Jeder Parameter steht mit Typ und Name im Kopf. Der Typ vor dem Methodennamen sagt, was return zurückgibt; void heißt: nichts.

Mit dem letzten String anfangen

        String ergebnis = "";        if (s3.length() > 2) {            ergebnis += s3;        }

Rückwärts heißt: s3 kommt zuerst. Der neue Text wächst in der Variablen ergebnis. Sie beginnt als leerer String "", also ohne ein Zeichen. ergebnis += s3 hängt s3 hinten an.

„Kürzer als drei Zeichen“ wird ignoriert. Mitgenommen wird also, was mindestens drei Zeichen hat: s3.length() > 2. „drei“ hat 4 Zeichen, 4 > 2 ist wahr, danach gilt ergebnis = "drei".

Noch 9 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Teil a): drei Strings

Methode in Zeile 10 bis 28

Abbildung 1Teil a): drei Strings

Methode in Zeile 10 bis 28

public class StringsUmkehren {     public static void main(String[] args) {        System.out.println(rueckwaertsVerbunden("eins", "zwei", "drei"));        System.out.println(rueckwaertsVerbunden("eins", "z", "drei"));        System.out.println(rueckwaertsVerbunden("ab", "cde", "fg"));        System.out.println("[" + rueckwaertsVerbunden("a", "b", "c") + "]");    }     public static String rueckwaertsVerbunden(String s1, String s2, String s3) {        String ergebnis = "";        if (s3.length() > 2) {            ergebnis += s3;        }        if (s2.length() > 2) {            if (ergebnis.length() > 0) { // wenn schon etwas davor steht                ergebnis += "-";            }            ergebnis += s2;        }        if (s1.length() > 2) {            if (ergebnis.length() > 0) {                ergebnis += "-";            }            ergebnis += s1;        }        return ergebnis;    }}
LegendeDas ganze Programm.