Rekursive String Methode, Gerade Zahlen rausfiltern

macle

macle

Mitglied
Hey,
ich bin jetzt schon lange am verzweifeln und weiß nicht genau was ich tu soll.
Die Aufgabe lautet:

Rekursive Methode gibGeradeZahlen(String s) schreiben; es ist ein String aus Zahlen gegeben, von welchem nur die geraden Zahlen zurückgegeben werden soll.

Wäre es kein String, und wenn ich Schleifen benutzen dürfte, mit einer Aktualisierungsanweisung, wäre das einfacher, aber das darf ich nicht anwenden.

Meine Idee war:

Java:
int laenge = s.length();

return s.length() == 1
 ? s.charAt(0) % 2 == 0
  ? s
  : ""
 : s.charAt(laenge - 1) % 2 == 0
  ? gibGeradeZahlen( string mit letzter ziffer entfernt ) + s.charAt(...)
  : gibGeradeZahlen( string mit letzter ziffer entfernt );

Am Ende habe ich Schwierigkeiten, ich weiß nicht wie ich den String mit einer Stelle weniger nochmal durchgebe

Hoffe auf eine baldige Antwort, vielen Dank
 
Zuletzt bearbeitet von einem Moderator:
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Auch in einer rekursiven Funktion darfst du normale ifs benutzten, du musst das nicht mit dem ternären Operator machen :)

Zu deiner Frage: mal in die Doku zu String geguckt? Da finden sich Methode, die nur einen Teil des Strings (engl. etwa „substring“) zurück geben
 
macle

macle

Mitglied
Auch in einer rekursiven Funktion darfst du normale ifs benutzten, du musst das nicht mit dem ternären Operator machen :)

Zu deiner Frage: mal in die Doku zu String geguckt? Da finden sich Methode, die nur einen Teil des Strings (engl. etwa „substring“) zurück geben
Mit substring habe ich schon rumprobiert, da lässt sich ja einfach die letzte Stelle entfernen mit s.substring(0, s.length()-1). Soll ich dann einfach eine Aktualisierungsanweisung machen, int i = 1 und diese in s.substring(0, s.length()-i) einsetzen?! Könnte funktionieren oder gibt es eine Alternative?
 
macle

macle

Mitglied
Was zur Hölle ist eine Aktualisierungsanweisung?


Warum das i? Schreib doch einfach direkt die 1 dahin.
Eben eine Variable die sich immer erhöht, aber egal.

So hatte ich das auch am Anfang stehen aber da kamen nur Errors raus.
Ich hab es jetzt aber gelöst, vielen Dank!

Java:
public static String gibGeradeZahlen(String s){
        
        int laenge = s.length();
        
        return s.length() == 1
                ? s.charAt(0) % 2 == 0
                    ? s
                    : ""
                : s.charAt(laenge - 1) % 2 == 0
                    ? gibGeradeZahlen(s.substring(0, laenge - 1)) + s.charAt(laenge -1)
                    : gibGeradeZahlen(s.substring(0, laenge - 1));
        
    }
 
B

BestGoalkeeper

Bekanntes Mitglied
Bei so etwas bitte immer ein Beispiel angeben. Und hier geht es ja um Ziffern und es geht nicht um Zahlen...
Java:
    public static boolean isEven(char c) {
        return Character.getNumericValue(c) % 2 == 0;
    }

    public static String gibGeradeZiffern(String s) {
        int l = s.length();
        return l == 0 ? "" : isEven(s.charAt(0)) ? s.charAt(0) + gibGeradeZiffern(s.substring(1)) : gibGeradeZiffern(s.substring(1));
    }

    public static void main(String[] args) {
        System.out.println(gibGeradeZiffern("9012345678909"));
    }
 
kneitzel

kneitzel

Top Contributor
Wenn da jetzt sogar schon eine Lösung genannt wurde, dann will ich da einmal kurz ansetzen und meinen Senf dazu geben:

Verschachtelte Ternäre Operationen sind aus meiner Sicht schwer lesbar. Des Weiteren finde ich bei Rekursionen immer schön, wenn die Abbruchbedingung gut zu erkennen ist. Das würde dann den Code leicht verändern:

Java:
    public static boolean isEven(char c) {
        return Character.getNumericValue(c) % 2 == 0;
    }

    public static String gibGeradeZiffern(String text) {
        if (text.length() == 0) return "";
        return isEven(text.charAt(0)) ? text.charAt(0) + gibGeradeZiffern(text.substring(1)) : gibGeradeZiffern(text.substring(1));
    }

    public static void main(String[] args) {
        System.out.println(gibGeradeZiffern("9012345678909"));
    }

Und ich würde sogar eher noch eine Methode hinzufügen, die einen char nimmt und bei gerader Ziffer diese als String zurück gibt und sonst nur einen leeren String. Dann wäre der ternäre Operator da auch weg und man hätte etwas wie:
Java:
return filterNonEvenChars(text.charAt(0)) + gibGeradeZiffer(text.subString(1));
(Die Namen müsste man sich ggf. noch überlegen ...)
 
B

BestGoalkeeper

Bekanntes Mitglied
Vielleicht ist auch das besser verständlich
Java:
    public static boolean isEven(char c) {
        return Character.getNumericValue(c) % 2 == 0;
    }

    public static String gibGeradeZiffern(String s) {
        int l = s.length();
        if (l > 0) {
            char first = s.charAt(0);
            boolean even = isEven(first);
            String rest = gibGeradeZiffern(s.substring(1));
            return even ? first + rest : rest;
        } else {
            return "";
        }
    }
Oder das (wie es JustNobody bereits vorgeschlagen hat...)
Java:
    public static boolean isEven(char c) {
        return Character.getNumericValue(c) % 2 == 0;
    }

    public static Optional<String> filterIsEven(String s) {
        if (s.isEmpty() || !isEven(s.charAt(0))) {
            return Optional.empty();
        }
        return Optional.of(String.valueOf(s.charAt(0)));
    }

    public static String gibGeradeZiffern(String s) {
        return s.length() == 0 ? "" : filterIsEven(s).orElse("") + gibGeradeZiffern(s.substring(1));
    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
V Methoden Rekursive Methode mit String als Rückgabe Java Basics - Anfänger-Themen 7
M Rekursive Prüfung ob ein Array sortiert ist... Java Basics - Anfänger-Themen 4
J Rekursive swapArray Methode Java Basics - Anfänger-Themen 69
D Rekursive Methode Java Basics - Anfänger-Themen 8
R Methoden rekursive Methoden Java Basics - Anfänger-Themen 6
O Quersumme rekursive Methode Java Basics - Anfänger-Themen 3
B Treetable (rekursive Funktion) aufbauen von Datenbank Java Basics - Anfänger-Themen 4
M Rekursive Methode Programmieren Java Basics - Anfänger-Themen 3
J rekursive Methode Java Basics - Anfänger-Themen 26
M rekursive division/0 mit exception Java Basics - Anfänger-Themen 18
J Rekursive Methode - Ziffern einer Zahl ausgeben Java Basics - Anfänger-Themen 2
M Rekursive Dateiliste erstellen mit Dateiendung(en) ?? Java Basics - Anfänger-Themen 4
S Rekursive Methode Java Basics - Anfänger-Themen 8
O Rekursive Methode Java Basics - Anfänger-Themen 4
K Rekursive Methode Java Basics - Anfänger-Themen 1
K Rekursive Methode für Fakultät mit BigInteger Java Basics - Anfänger-Themen 10
L Rekursive Methode a * b berechnen Java Basics - Anfänger-Themen 2
L Rekursive Methode zur Berechnung der Potenz q hoch p Java Basics - Anfänger-Themen 17
J Methoden Rekursive Return Methode Java Basics - Anfänger-Themen 2
G Harmonische Rekursive Folge Java Basics - Anfänger-Themen 3
T Stack Overflow - Rekursive Fibonacci Java Basics - Anfänger-Themen 10
B Datentypen Suchbaum - Rekursive Ausgabe Java Basics - Anfänger-Themen 1
P Methoden Rekursive Methode für Potenzen Java Basics - Anfänger-Themen 2
M Methoden Binäre Suche als rekursive Variante Java Basics - Anfänger-Themen 5
B Rekursive Algorithmus schreiben Java Basics - Anfänger-Themen 8
S Eine rekursive Lösung Java Basics - Anfänger-Themen 4
S Int zu Hexadezimal - Rekursive Methode Java Basics - Anfänger-Themen 2
M Rekursive Suche in einem Feld Java Basics - Anfänger-Themen 11
N Rekursive Addition mit Scanner Java Basics - Anfänger-Themen 12
shiroX OOP Rekursive und Iterative Definition Java Basics - Anfänger-Themen 2
B Methoden Rekursive Methoden Java Basics - Anfänger-Themen 2
T Iterative Pi Berechnung in Rekursive Java Basics - Anfänger-Themen 2
C rekursive methode Java Basics - Anfänger-Themen 2
D Methoden Rekursive Methoden Java Basics - Anfänger-Themen 13
R rekursive Methode funktioniert nicht Java Basics - Anfänger-Themen 4
M Stürzen alle Rekursive Methoden irgendwann ab? Java Basics - Anfänger-Themen 11
D Primzahlen und Rekursive Liste Java Basics - Anfänger-Themen 29
R Rekursive Methode, Files finden Java Basics - Anfänger-Themen 2
S rekursive folge verbessern Java Basics - Anfänger-Themen 2
C rekursive Methode verstehe nicht! Java Basics - Anfänger-Themen 3
S Methoden rekursive Methode funktioniert nicht Java Basics - Anfänger-Themen 4
E Rekursive Methode Java Basics - Anfänger-Themen 3
N Methoden Rekursive Fibonaccizahlen mit Array Java Basics - Anfänger-Themen 2
R Rekursive Ausgabe eines Binärbaums Java Basics - Anfänger-Themen 4
J Methoden Rekursive Potenz ohne Math.Pow() Java Basics - Anfänger-Themen 9
A Rekursive Methode in Iterative umwandeln Java Basics - Anfänger-Themen 6
S Labyrith Rekursive Wegsuche Java Basics - Anfänger-Themen 4
C Rekursive Methode - Ziffern in Zahl Java Basics - Anfänger-Themen 33
U Dezimal zu Hexadezimal rekursive Funktion Java Basics - Anfänger-Themen 8
M rekursive Funktion zur Berechnung der Spiegelzahl Java Basics - Anfänger-Themen 7
L iterative und rekursive Folge Java Basics - Anfänger-Themen 20
G Rekursive Methode Java Basics - Anfänger-Themen 3
A rekursive Listen in Java? Java Basics - Anfänger-Themen 5
B OOP Einfach verkettete Liste - rekursive Methoden Java Basics - Anfänger-Themen 1
E Rekursive Methode mit Zufallsarray Java Basics - Anfänger-Themen 6
E Rekursive Methode Java Basics - Anfänger-Themen 18
U Rekursive lösung von pascal dreieck Java Basics - Anfänger-Themen 11
M Rekursive Methode - wo ist der Fehler? Java Basics - Anfänger-Themen 4
J rekursive methode Java Basics - Anfänger-Themen 6
H ScrollBar inaktiv / Rekursive Methode Java Basics - Anfänger-Themen 4
J Rekursive Methode Java Basics - Anfänger-Themen 11
G Rekursive Methode Java Basics - Anfänger-Themen 5
N Rekursive Berechnung der Höhe eines binären Baumes Java Basics - Anfänger-Themen 4
K Rekursive Methoden Java Basics - Anfänger-Themen 15
K Rekursive Funktion (Verständnissfrage) Java Basics - Anfänger-Themen 5
S Rekursive Bruch potenzierung Java Basics - Anfänger-Themen 2
D rekursive Summenberechnung Java Basics - Anfänger-Themen 8
J Rekursive Methode: Fakultaet berechnen Java Basics - Anfänger-Themen 5
E Rekursive definierten Folge Java Basics - Anfänger-Themen 10
A HILFE! Rekursive Funktion Java Basics - Anfänger-Themen 20
kulturfenster rekursive Binaere Suche Java Basics - Anfänger-Themen 12
F Rekursive Aufrufe, Parameterübergabe, call by reference Java Basics - Anfänger-Themen 3
G Rekursive Berechnung von n über k schlägt fehl Java Basics - Anfänger-Themen 5
B Rekursive & schreiben im ArrayList Java Basics - Anfänger-Themen 2
J Rekursive Fkt. Java Basics - Anfänger-Themen 2
A Rekursive Dateisuche Java Basics - Anfänger-Themen 12
K rekursive Funktion mit mehreren Parametern Java Basics - Anfänger-Themen 5
G rekursive Methode Java Basics - Anfänger-Themen 3
N rekursive Beispiele Java Basics - Anfänger-Themen 3
G rekursive u iterative Methode Java Basics - Anfänger-Themen 8
G Rekursive Methode Java Basics - Anfänger-Themen 7
ven000m Rekursive Funktionen - Frage Java Basics - Anfänger-Themen 16
D rekursive ausgabe einer zahl Java Basics - Anfänger-Themen 14
S Rekursive Funktionen in imperative Funktionen umwandeln Java Basics - Anfänger-Themen 2
M Rekursive Binärsuche Java Basics - Anfänger-Themen 6
S rekursive methoden Java Basics - Anfänger-Themen 5
A eine neue normale String-Array von einer String-Array, die in for schleife ist, schaffen Java Basics - Anfänger-Themen 3
A keine Ergebnisse - String nummer in array nummer converting Java Basics - Anfänger-Themen 1
O Datentypen String teilen Java Basics - Anfänger-Themen 5
B String to int Java Basics - Anfänger-Themen 11
D String value change listener Java Basics - Anfänger-Themen 2
I Wo am besten eine String Konstante initialisieren? Java Basics - Anfänger-Themen 5
F JMenuItem Kann nicht nach einem String benannt werden... Java Basics - Anfänger-Themen 11
B String to Float Java Basics - Anfänger-Themen 27
B Map<String, FilterMeta, wie Wert bekommen? Java Basics - Anfänger-Themen 4
Dimax stream in string[] speichern Java Basics - Anfänger-Themen 6
Dimax String Probleme Java Basics - Anfänger-Themen 12
H Wie wird ein String intern gespeichert? Java Basics - Anfänger-Themen 10
C String auf Dualzahl überprüfen Java Basics - Anfänger-Themen 5
L Mit Zahlen im String rechnen Java Basics - Anfänger-Themen 19

Ähnliche Java Themen

Anzeige

Neue Themen


Oben