# String "umkehren"?



## Matze80 (16. Apr 2005)

Hallo!
Ich soll ein Programm schreiben, dass eine Zeichenkette umgekehrt ausgibt und das rekursiv (z.B: matze => eztam). Ich weiß noch nicht mal wie ich das "normal" mache, geschweigedenn rekursiv.
Hab mich in der Onlinedokumentation bisschen rumgetrieben aber leider nichts gefunden. Gibts so ne Methode oder muss ich die selbst schreiben?

schon mal Danke für die Hilfe!
Matze


----------



## bygones (16. Apr 2005)

kommt drauf an ob du mit anderen Klassen arbeiten darfst.

Wenn ja schau dir die Klasse StringBuffer an (methode reverse).

wenn nein -> schau dir die Klasse String an (methode charAt(int x))... das mit einer for schleife die von hinten durchläuft... tata


----------



## Guest (16. Apr 2005)

danke für die hilfe!



```
public static char Zeichenkette (String s) {
        char x='*'; //ich muss da irgend nen wert zuweisen oder?
        for (int i = 0; i<=s.length(); i++) {
              x = s.charAt(i);
              return x;
        }
        return x;
    }


im main:
        String s = "abc";
        
        System.out.println(Zeichenkette(s));
```

im moment gibt er mir nur "a" aus. wieso springt er aus der schleife? mit "continue" konnte ich nix machen.

gruß
Matze


----------



## mic_checker (16. Apr 2005)

Wieso soll deine Methode char zurückgeben? Hab gedacht wenn schon dann String.

Mach es doch so:

Du gehst den String von hinten nach vorne durch (for Schleife), holst dir das Zeichen an der entsprechenden Stelle (charAt(...)) und hängst dieses Zeichen an einen StringBuffer an. Am Ende wandelst du den StringBuffer in String (toString()) und gibst das zurück.


----------



## Wildcard (16. Apr 2005)

In einer Rekursion wirst du normal keine Schleife finden.
Du bekommst nur einen Buchstaben weil da return x steht, und die Schleife somit endet  :wink: 

```
public static String reverse(String s)
    {
        if(s==null || s.equals(""))
            return "";
        return s.substring(s.length()-1)+reverse(s.substring(0,s.length()-1));
    }
```
Hab keinen StringBuffer benutzt weil's so vermutlich leichter verständlich ist!?
Aber normalerweise Strings nur mit StringBuffer.append() zusammensetzen...


----------



## mic_checker (16. Apr 2005)

Wildcard hat gesagt.:
			
		

> In einer Rekursion wirst du normal keine Schleife finden.



Das ist schon klar  Ich dachte nur er wollte mit seiner Lösung diesen oben beschriebenen Ansatz verfolgen, da es ja keinen Sinn macht in der rekursiven Lösung in einer for Schleife den kompletten String durchzugehen....

So haben wir wenigstens die iterative Lösung und die rekursive.....


----------



## bygones (16. Apr 2005)

@wildcard:
wenn schon StringBuffer - warum nicht reverse Methode ;-) ?

@Gast:
du hast ein return in deiner forschleife was zur beendigung der methode führt im ersten durchlauf,.... außerdem wie gesagt gibst du nur ein char zurück, keinen string....


----------



## Wildcard (16. Apr 2005)

DBAC hat gesagt.:
			
		

> @wildcard:
> wenn schon StringBuffer - warum nicht reverse Methode  ?





			
				Matze80 hat gesagt.:
			
		

> Ich soll ein Programm schreiben, dass eine Zeichenkette umgekehrt ausgibt und das rekursiv


Weil Aufgaben nicht immer sinnvoll sind  :wink:


----------

