# String rückwärts ausgeben



## Lotrielle (28. Apr 2005)

Hallo,

Ich hänge jetzt schon ewig an so einer blöden Java Aufgabe und brauche dringend Hilfe.
Die Aufgabe lautet:
Bitte schreiben Sie ein Programm, dass Ihren Namen (Vor und Nachnamen) rückwärts
ausgibt. ("Donald Duck" --> "kcuD dlanoD"). 
Schreiben Sie dazu bitte eine Methode
String rueckwaertsText( String inString)
die den rückwarts-Text zurückgibt.

Meine Lösung wäre gewesen:

```
public class NameRueck {
	public static void main(String[] args)
	{
		String rueck = ("Cathrin Clemens");
		{
		"Cathrin Clemens".length (); 

		
		System.out.println(rueck.charAt ( 14 ) );
		System.out.println( rueck.charAt( 13 ) );
	 	System.out.println( rueck.charAt( 12 ) );
	 	System.out.println( rueck.charAt( 11 ) );
	 	System.out.println( rueck.charAt( 10 ) );
	 	System.out.println( rueck.charAt( 9 ) );
	 	System.out.println( rueck.charAt( 8 ) );
	 	System.out.println( rueck.charAt( 7 ) );
	 	System.out.println( rueck.charAt( 6 ) );
	 	System.out.println( rueck.charAt( 5 ) );
	 	System.out.println( rueck.charAt( 4 ) );
	 	System.out.println( rueck.charAt( 3 ) );
	 	System.out.println( rueck.charAt( 2 ) );
	 	System.out.println( rueck.charAt( 1 ) );
	 	System.out.println( rueck.charAt( 0 ) );
		
	}
}
}
```
Das Problem dabei ist blos, dass eine Eingabe gemacht werden soll und diese dann umgedreht werden soll.
Bei mir ist ja keine Eingabe vorhanden und String in String gibts auch nicht.

Desweiteren soll die Sache erweiterbar sein:

Bitte erweitern Sie das Programm so, dass es die Worte dabei in der richtigen
Reihenfolge lässt ("Donald Duck" --> "dlanoD kcuD")

UND:

Bitte erweitern Sie das Programm so, dass es hinter Ihrem Namen auch alle
Kommandozeilen-Optionen, die beim Aufruf des Programmes angegeben wurden, in
der gleichen Form rückwärts ausgibt (Aufrufbeispiel: java rueckwaerts eins zwei drei
[return] --> "dlanoD kcuD snie iewz ierd")

Ich werde fast wahnsinnig, habe das halbe internet durchforstet, aber es funzt nix...

Bin für jede Hilfe dankbar!

Lotrielle


_edited by thE_29: durch das fett wird dir auch net schneller geholfen_


----------



## thE_29 (28. Apr 2005)

Schau dir mal die Funktion an

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/StringBuffer.html#reverse()


----------



## Lotrielle (28. Apr 2005)

Jetzt müsste ich nur noch wissen wo im Code ich das einbaue und ob ich es anstatt oder zusätzlich einbaue...
Verzweifel....


----------



## thE_29 (28. Apr 2005)

Nanana, ich mir deine Aufgabe net!

Die sollst schon brav selber machen und wer weiß ob ihr überhaupt vorgefertigte Methoden benutzen dürft!

Dein Ansatz mit den charAt ausgaben is ja eh net so verkehrt!

Die Parameter was du übergibst sind in args[] abgespeichert!

Und das du dich mit dem StringBuffer spielen kannst, probier mal


```
StringBuffer strBuf = new StringBuffer(rueck);

System.out.println(strBuf.reverse());
```

Habt ihr schon for schleife oder so durchgemacht?


----------



## mic_checker (28. Apr 2005)

```
String test = "blablalala";
test = new StringBuffer(test).reverse().toString();
```

Btw. zum Thema "Text umkehren" bzw . "Wort rückwärts ausgeben" gibt es schon einige Threads, einfach mal die Suchfunktion bemühen wenn du nicht weiter kommst.

edit:
zu langsam


----------



## Lotrielle (28. Apr 2005)

So:


```
public class ReverseName {
		  
		    public static void main(String args[]) {
		    	String rueck = "Cathrin Clemens";
		    	System.out.println("Cathrin Clemens");
		      for (int i = args.length-1; i >= 0; i--)
		        System.out.println(args[i]);
		      StringBuffer strBuf = new StringBuffer(rueck); 

		      System.out.println(strBuf.reverse());
		      
		    }
		  
		  }
```

Das klappt jetzt...
Danke


----------



## thE_29 (28. Apr 2005)

Und wenn du jedes Wort einzeln machen musst!

Guck dir die String.split("") Methode an!

Du splittest deinen Hauptstring mit String.split(" ") und wandelst dann alle Strings einzelen in verkehrte um (mit schleifen wieder)


Und siehst du, du kannst ja eh schon was, nur net Denkfaul sein


----------



## Lotrielle (28. Apr 2005)

Muss der String dann auch gleich geteilt werden, wenn ich ihn angebe oder erst später...
Ich krieg immer Fehlermeldungen raus...


----------



## mic_checker (28. Apr 2005)

Dann poste mal die Fehlermeldungen und den Code mit dem du es probiert hast.


----------



## Lotrielle (28. Apr 2005)

```
public class ReverseName {
		  
		    public static void main(String args[]) {
		    	String rueck = ("Cathrin;Clemens");
		    	String input = "Cathrin;Clemens"; 
		    		String[] results = input.split(";"); 
		    		for (int i = 0; i < results.length; i++) 
		    		{ 
		    		    System.out.println(results[i]); 
		    		}

		    		for (int j = args.length-1; j >= 0; j--)
		    		System.out.println(args[j]);
		    		StringBuffer strBuf = new StringBuffer(rueck);

		    		System.out.println(strBuf.reverse());
		      
		    }
		  
		  }
```

So jetzt kommt keine Fehlermeldung mehr, aber was ich eigentlich will ist das zuerst mein Vorname und dann mein Nachname rückwärts ausgegeben wird...
Des passiert aba net....irgendwas fehlt...


----------



## mic_checker (28. Apr 2005)

Du sagst ihm doch nirgendwo das er es so machen soll wie du es willst, du gibst einfach nur den Inhalt von results aus und dann nachher den insgesamt umgedrehten. Statt einfach nur results auszugeben, könntest du in der Schleife reverse entsprechend aufrufen.


----------



## thE_29 (28. Apr 2005)

wie wärs damit??


```
//nach split....
StringBuffer strBuf = new StringBuffer();
for(int x = 0; x != results.length; x++)
{
   StringBuffer strTmp = new StringBuffer(results[i]);
//jetzt jeden durchgehen umdrehen und dann zu deinem strBuf objekt append´en 
//danach das ganze mit args noch machen und du hast es ;)
```


----------



## Lotrielle (28. Apr 2005)

```
public class ReverseName7 {

        
          public static void main(String args[]) { 
             String rueck = ("Cathrin;Clemens"); 
             String input = "Cathrin;Clemens"; 

                String[] results = input.split(";"); 
                StringBuffer strBuf = new StringBuffer(); 
                for(int x = 0; x != results.length; x++) 
                { 
                   StringBuffer strTmp = new StringBuffer(results[x]); 
                for (int i = 0; i < results.length; i++) 
                { 
                    System.out.println(results[x]); 
 
                System.out.println(args[x]); 
                StringBuffer strBuf = new StringBuffer(rueck); 

                System.out.println(strBuf.reverse()); 
            
          } 
        
        }
          }
```

Also so siehts jetzt aus...
Ich kann damit leider nichts anfangen...
Weiss echt net was ich noch machen soll...
Wie sammel ich mir den ganzen code zusammen und vorallem in welche Reihenfolge bring ich den dann...
Java is anscheinend nix für Mädels...

Habe ansonsten für diese Aufgabe noch einen anderen Code von nem Entwickler von meiner Arbeit bekommen, der auch funktioniert bei dem ich aber nicht durchblicke, selbst wenn ich versuche alles auszukommentieren...
Ich schick ihn einfach mal mit, wenn ihr mir dazu was erklären könntet wäre toll...


```
public class NameRueckOrder {

    public static void main(String[] args) 
    {
        String useName="Cathrin Clemens";

        System.out.println(rueckwaertsText(useName));

    }
    

    public static String rueckwaertsText(String inString) {
    	        char[] inStringArrayWord;
                String[] inStringArray;
        String rueckString;
        
        rueckString="";
        inStringArray=inString.split(" ");
        
        for (int n=0; n<inStringArray.length; n++) {
            inStringArrayWord=inStringArray[n].toCharArray();
            if (n>0) rueckString=rueckString+" "; 
            
            for (int i=inStringArrayWord.length; i>0; i--){
                rueckString=rueckString+inStringArrayWord[i-1];
            }
        }
       
        return rueckString;
    }
}
```


Wenn ich das richtig verstehe erstelle ich einen String useName,
Dann gebe ich was aus aber rueckwartsText is doch kein Befehl...

und was bedeutet inStringArrayWord und wo hab ich rueckString definiert...

Danke für eure Hilfe, scheine ein hoffnungsloser Fall zu sein.


----------



## mic_checker (28. Apr 2005)

Schau dir das Code-Snippet von the_29 doch mal an, du brauchst in deinem Prog nur eine for-Schleife.


----------



## Lotrielle (28. Apr 2005)

is ja nu net so dass ich permanent aus em fenster glotz...
Ich werde da aber net schlau draus...wie appen'e ich irgendwas an ein Objekt...
Das Problem is, dass ihr wisst wovon ihr redet und ich net raff was ihr schreibt... :bahnhof: 
Ich hab wenn den code einbaue (von the 29)
Dann einen StringBuffer strTmp,
Muss der andere StringBuffer strBuf in meinem Code dann raus und die 2. for-schleife auch?
Sorry...


----------



## Lotrielle (28. Apr 2005)

```
public class ReverseName7 {

        
          public static void main(String args[]) { 
             String rueck = ("Cathrin;Clemens"); 
             String input = "Cathrin;Clemens"; 

                String[] results = input.split(";"); 
                StringBuffer strBuf = new StringBuffer(); 
                for(int x = 0; x != results.length; x++) 
                { 
                   StringBuffer strTmp = new StringBuffer(results[x]); 
                
                    System.out.println(results[x]); 
 
                System.out.println(strBuf.reverse()); 
            
          } 
        
        }
          }
```
Unfassbar!

Meintet ihr so?

Ich glaub ich habs...

 :lol: 

Wie lang hab ich jetzt an dem scheiss gesessen....

Bitte steinigt mich net...

Seid geknutscht!


----------



## Roar (28. Apr 2005)

Lotrielle hat gesagt.:
			
		

> Seid geknutscht!


ok


----------



## thE_29 (29. Apr 2005)

Mh, das geht bei mir aber net 

Du musst einfach jedes Element durchgehen, diesen im strTmp reversen und dann zu strBuf appenden (das machst du mit den results und mit args)

Und zum schluss lässt du strbuf normal ausgeben (kleiner tipp, strBuf wird niemals mit reverse aufgerufen ^^)


----------

