String von hinten alle drei Zeichen abschneiden und in umgekehrter Reihenfolge ausgeben.

WinterMensch

Mitglied
Guten Morgen alle miteinander,

Also ich habe einen Kommandozeilenparameter und soll den nun von hinten begonnen in Teile zu je drei Zeichen zerlegen und in umgekehrter Reihenfolge wieder zusammengesetzt am Bildschirm ausgeben.
Das ganze soll rekursiv geschehen, indem ich die letzten drei Zeichen lokal in der Methode in einem String speicher und den vorderen Rest rekursiv der Methode wieder übergebe.

Zum Beispiel:

123456
456123

oder:

1234567
5672341

Ich weiß schon, dass ich zum Beispiel mit

Code:
rest = substr("abcdef", -3, 0);

"def" zurückgeben kann. Aber bleibt mir dann der Rest, also "abc" erhalten?
Und wie kann ich das ganze rekursiv lösen?
 
Das ganze kann so ausschauen:
Java:
public String rekursiv (String input) {
	if (input.length() < 3) {
		return input;
	}
	
	String affix = input.substring(input.length() - 3);
	String prefix = input.substring(0, input.length() - 3);
	
	return affix + rekursiv (prefix);
}
Durch das untere return bleibt dir der komplette String erhalten. Du baust ihn damit Stück für Stück zusammen.
 
Ok, das klingt logisch, ich würde in Zeile 2

if (input.length() <= 3) {

schreiben, weil ja auch bei drei zeichen, der String einfach wieder in seiner ursprünglichen Form ausgegeben werden kann.
Allerdings habe ich jetzt noch das Problem, dass ich nicht weiß wie ich das mit dem Kommandozeilenparameter mache.
Also wenn ich das Programm aufrufe, kann ich ja einfach etwas eingeben:

java Name Kommandozeilenparameter

aber wie kann ich den dann im Programm verwenden?
 
Dafür sind in der
Java:
public static void main(String[] args)
die args da. Das ist ein Array der Argumente, die du übergeben hast.
 
Java:
class RecursiveSplit {

    public static void main (String[] args) {
    String s = String[] args;
    Out.println(s);
    
    
    
    }

}

Was ist denn jetzt daran falsch? Ich möchte den Kommandozeilenparameter dem String s übergeben und dann einfach nur am Bildschirm ausgeben.
 
Java:
 String s = String[] args;

args IST bereits ein String-Array...
Außerdem kann ein String-Array (String[]) nicht in ein String reingequetscht werden.

Java:
class RecursiveSplit {
 
    public static void main (String[] args) {
    for(String arg : args){
        Out.println(arg);
    }
    }
 
}
 
Ok, gut, also ich habe ich jetzt das hier:

Java:
class RecursiveSplit {

    public static void main (String[] args) {
    for(String input : args){
        Out.println(input);
    }
    String rekursiv;
    Out.println(neu);
    
    }


public String rekursiv (String input) {
    if (input.length() <= 3) {
        return input;
    }
    
    String affix = input.substring(input.length() - 3);
    String prefix = input.substring(0, input.length() - 3);
    
    String neu = affix + rekursiv (prefix);
    return neu;
}

}


Als Fehlermeldung bekomme ich noch, dass er neu nicht finden kann.
Hab jetzt schon mehreres ausprobiert, aber der fehler bleibt da....
 
Ich denke du solltest dir nochmal die GrundGrundGrundlagen angucken, z.B. wie man Methoden aufruft. Das was du da tust ist nämlich müll.
 

Zurück
Oben