Zeichen im String verschiebe

Taskiz

Mitglied
Servus Leute,

ich soll die Buchstaben eines String "Haus" um den Wert 3 verschieben, sodass der Computer am Ende "ausH" zurück gibt. Leider hab ich keine Ahnung wie ich das machen soll. Kann mir jemand nur in Worten beschreiben wie der Code auszusehen hat, ich versuch's dann selbst umzusetzen.

Grüße.
 
Nimm mal ein Blatt Papier, schreib "Haus" drauf und schau mal, was Du tun müsstest, um das Wort um eine Stelle zu verschieben.
 
Also ich hatte folgende Ursprungsidee

Java:
public class Verschiebung {

public static void main(String[] args) {
   
    String sentence = "Haus";
    int wert = 3;
   
        if (wert==0) {
           
            System.out.println(sentence);
        }

        for(int i =0; i<sentence.length()-1; i++) {
   
               char x = sentence.charAt(i+sentence.length()-wert);
             
            System.out.println(x);

        }
   
    }

}

Da bekomm ich jetzt "a u s" heraus, ich weiß nur nicht ganz wie ich "H" an die letzte Stelle bekommen
 
Du hast einen String sentence.
Mit Hilfe der Methode substring der Klasse String kannst du die letzten drei Buchstaben herausfinden und ebenso alles, was davorsteht. Diese beiden Teile musst du nur vertauschen.
 
Ich glaub ich hab's nur wird der Code von links nach rechts und nicht wie ursprünglich geplant von rechts nach links verschoben

Java:
public class Verschiebung {

public static void main(String[] args) {
    
    String sentence = "Haus";
    int wert = 3;
            
            if (wert==0) {
                
                System.out.println(sentence);
            }
            
            else if (wert > sentence.length()) {
                
                System.out.println("Eingabefehler");
            }
            
            else {   
                
                String s2 = sentence.substring(0, wert);
                sentence = sentence.substring(wert) + s2;
            
            
            System.out.println(sentence);
            
            }
    }
}

Ich erhalte "sHau", muss nur noch herausfinden, wie ich die Richtung noch ändern kann.
 
Hast du es schon herausgefunden?

Ansonsten kannst du mit String.length() herausfinden, wie lang der Text ist, und dann die letzten drei Zeichen hearaussuchen.
 
Der Thread ist sehr alt - da wirst Du so vermutlich keine Antwort mehr bekommen. Daher wäre es ggf. ratsam, einfach einen eigenen Thread zu eröffnen und darin zu beschreiben, wo denn das Problem genau ist bzw. was Du denn schon hast.
 
Kannst du mir auch sagen, wie du es gemacht hast. Ich habe nämlich das selbe Problem. Also ich muss es von rechts nach links schieben.
Das Problem ist hierbei ganz einfach, dass n-mal ALLE Elemente um 1 verschoben werden müssen.

Es gibt Algorithmen, die das anders lösen können, aber diese sind extrem kompliziert und nicht für Anfänger zu empfehlen.
 
Das Problem ist hierbei ganz einfach, dass n-mal ALLE Elemente um 1 verschoben werden müssen.

Es gibt Algorithmen, die das anders lösen können, aber diese sind extrem kompliziert und nicht für Anfänger zu empfehlen.
Öhm, kannst Du diese Position erläutern?

Es ist unnötig, mehrfach um 1 zu verschieben. Der Aufbau ist ja immer gleich:

Man unterteilt den String in zwei Teilstrings und stellt diese in umgedrehter Reihenfolge aneinander.
Bei einer Drehrichtung ist die Trennstelle gleich der gewünschte Anzahl der Verschiebungen
In der anderen Richtung ist das aber leider nicht der Fall.

Aber man hat ja die Länge des Strings ... und da kann man dann ja was abziehen. Das muss man sich jetzt nicht einmal im Detail über die Dokumentation der Methode substring herausfinden sondern man kann es einfach mal testen:

Code:
                String s2 = sentence.substring(0, wert);
                sentence = sentence.substring(wert) + s2;
war ja der Code, den der TE schon herausgefunden hat.

Da einfach mal ein sentence und ein wert vorgeben. Und dann schauen, was raus kommt. Bei "Hallo" kann man für Wert diverse Werte vorgeben:
0 -> Hallo
1 -> alloH
2 -> lloHa
3 -> loHal
4-> lHall
5 -> Hallo

Die Länge war 5 Zeichen und nun kann ich je nach Richtung doch eine einfache Regel erkennen:
In die eine Richtung ist es einfach die Anzahl der Stellen, die verschoben werden soll.
In die andere Richtung hast Du 5-Anzahl und 5 ist ja die Länge.

Der Algorithmus bleibt also gleich, nur die Position des Schnittes wird einmal angepasst.

@d_43 Ich denke, damit hast Du Deinen Algorithmus aus, oder?
 
Ja, findest du das für Anfänger zu empfehlen:
Nein, so unleserlichen Code würde ich jedem um die Ohren hauen. Wieso Du meinst, Code immer so extrem unleserlich und überkompliziert schreiben musst, werden wir hier wohl auch nie verstehen. Und was hat dein Code mit der Aufgabenstellung zu tun?

Ich sitze hier bei Deinen Posts immer da und frage mich: Was willst Du mir oder dem TE sagen? Wem glaubst Du, helfen Deine Aussagen?

Der Algorithmus, den der TE schreiben soll, ist sehr einfach. Da ist nichts komplexes bei. Aus dem bereits vorhandenen Code lässt sich dies einfach bauen. Der Algorithmus lässt sich einfach erläutern und auch herleiten.

Wenn man String.substring nicht nutzen dürfte, dann wäre die Frage: was darf genutzt werden? Und dann wäre es auch nicht deutlich komplizierter. Dann hat man halt eine Schleife, die Zeichen einzelnd kopiert. Oder wenn ein modulo Operator zu kompliziert scheint, dann hat man halt zwei Schleifen.

Aber all das rechtfertigt keine Angriffe a.la.:
Heute hast du aber wieder deinen 40-%-Tag. 😉 Oder anders: Deine Antwort ist für die Tonne.
Wenn Du da irgendwelche Argumente im Kontext des Threades hättest, dann würde ich so ein Urteil evtl. einsehen. Aber so ist das doch nur herumtrollen. Der kleine Tobias will aus dem Bällespieleparadies abgeholt werden?
 
Öhm, kannst Du diese Position erläutern?

Es ist unnötig, mehrfach um 1 zu verschieben. Der Aufbau ist ja immer gleich:

Man unterteilt den String in zwei Teilstrings und stellt diese in umgedrehter Reihenfolge aneinander.
Bei einer Drehrichtung ist die Trennstelle gleich der gewünschte Anzahl der Verschiebungen
In der anderen Richtung ist das aber leider nicht der Fall.

Aber man hat ja die Länge des Strings ... und da kann man dann ja was abziehen. Das muss man sich jetzt nicht einmal im Detail über die Dokumentation der Methode substring herausfinden sondern man kann es einfach mal testen:

Code:
                String s2 = sentence.substring(0, wert);
                sentence = sentence.substring(wert) + s2;
war ja der Code, den der TE schon herausgefunden hat.

Da einfach mal ein sentence und ein wert vorgeben. Und dann schauen, was raus kommt. Bei "Hallo" kann man für Wert diverse Werte vorgeben:
0 -> Hallo
1 -> alloH
2 -> lloHa
3 -> loHal
4-> lHall
5 -> Hallo

Die Länge war 5 Zeichen und nun kann ich je nach Richtung doch eine einfache Regel erkennen:
In die eine Richtung ist es einfach die Anzahl der Stellen, die verschoben werden soll.
In die andere Richtung hast Du 5-Anzahl und 5 ist ja die Länge.

Der Algorithmus bleibt also gleich, nur die Position des Schnittes wird einmal angepasst.

@d_43 Ich denke, damit hast Du Deinen Algorithmus aus, oder?
Ja Dankeschön hilft mir sehr 🙂
 

Zurück
Oben