String Vergleich

Beim bearbeiten folgender Aufgabe komme ich einfach nicht weiter, könnte mir jemand einen Tipp geben wie ich die Probleme realisiere :) Danke im Voraus.

Kommen wir zuerst zur Aufgabenstellung: Es werden über die Tastatur zwei Zeichenketten eingelesen. Die erste Zeichenkette entspricht dem Originalstring. Für die zweite Zeichenketten soll Ihr Programm nun ausgeben, ob sie durch ein zyklisches Verschieben des Originalstring zustande kommen kann und falls ja, um wie viele Zeichen dieser (nach rechts) verschoben werden müsste. Kann die zweite Zeichenkette durch ein zyklisches Verschieben des Originalstrings erzeugt werden, so soll das Programm ausgeben, um wie viele Zeichen (nach rechts) verschoben werden muss, damit aus der zweiten Zeichenkette der Originalstring entsteht.
Kann die zweite Zeichenkette nicht durch ein zyklisches Verschieben des Originalstrings erzeugt werden, so soll das Programm den Wert -1 ausgeben.

Nun zu meinem Problem:

Wir haben eine Testumgebung von der Uni bekommen, in welcher 5 Tests ausgeführt werden. 3 dieser 5 Tests leuchten bei meinem Programm grün, soweit so gut. Jedoch sind immer noch 2 Tests rot und mir fällt einfach nicht ein wie ich das implementieren könnte :(

Beim ersten Test werden zwei Strings eingelesen, welche nicht abbildbar sind. Der Test erwartet hier eine -1 als Ausgabe.
Beim zweiten Test werden zwei Strings eingelesen, welche nicht verschoben wurden somit gleich sind.(Habs mal probiert aber mein Ansatz ist scheinbar ein Schuss in den Ofen)

Java:
//import java.io.*;
import java.util.Scanner;

public class Zyklisch {
        
    
     public static void main(String[] args) {
          Scanner sc = new Scanner(System.in);
              String Str1 = sc.next();
              String Str2 = sc.next();
              int index = (Str1 + Str1).indexOf(Str2);
              
              if(Str1 == Str2){
                  System.out.println(0);
              }
              if(Str1.length() != Str2.length()) {
                  System.out.println(-1);
              }
              if (Str1.length() == Str2.length() && index > -1) {
                int offset= (Str1.length() - index) % Str1.length();
                System.out.println(offset);
              }
            sc.close();
        }
}
 
Was genau hast du dann als Code gehabt? Was genau hast Du beim Test eingegeben?

Wenn man Deinen Code nimmt und den String-Vergleich mit equals macht und zwei gleich lange Zeichenketten eingibt, dann wird kein -1 ausgegeben.

Wenn keine zwei gleich langen Zeichenketten eingegeben werden, dann wird aber natürlich -1 ausgegeben.
 
Ich glaube du hast mich etwas missverstanden :) Bei gleich langen Zeichenketten weiß ich dass er nicht -1 ausgibt, jedoch möchte ich gerne eine Abfrage um zu testen ob die Strings exakt gleich sind und somit keine Verschiebung vorliegt :D
 
Diese Abfrage hatte ich ausprobiert jedoch wird trotzdem -1 ausgegeben:
Java:
if(Str1.contentEquals(Str2)) {
                  System.out.println(0);
              }
 
Ein weiteres Problem, ich wüsste nicht wie ich eine Abfrage machen soll dass die Strings nicht abbildbar sind.

Beispielsweise mit dein Eingaben:
Praxistest
xistesPtra
 
Ich glaube ich habe die Ursache des Problems gefunden, jedoch kenne ich dazu keinen Lösungsansatz. Mein Programm kann nicht 2 Wörter in einen String einlesen welche durch ein Leerzeichen getrennt sind
 
Ja, das die Eigenart, wenn man next() nutzt. Aber Scanner bietet ja noch mehr Methoden. Evtl. willst Du nextLine() nutzen?

Und wenn Du es gelöst hast: Evtl. einfach auch die Lösung teilen für den Fall, dass noch jemand anderes ein ähnliches Problem haben sollte?
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben