Hi ich habe hier folgenden Code fabriziert zu der letzten Aufgabe der Übung 10 :
Ich wollte meine Idee ,die ich hatte, umsetzen. Hat aber leider net ganz geklappt : /
Ich habe jetzt den Fall "0" zur Vereinfachung weggelassen.
Code: Alles auswählen
public int indexOf(String s2) {
int a = 0;
int x = 0;
boolean gefunden = false;
if (s2.length() <= s.length()) {
for (int i = 0; i < s2.length(); i++) {
if(x==1) i = 0;
for (int n = 0 ; n < s.length(); n++) {
if (gefunden) n = a++;
if (x == 1) {
n = a++;
x = 0;
}
if ((s2.charAt(i) != s.charAt(n)) && (gefunden == true)) {
gefunden = false;
a = n;
x++;
break;
}
if (s2.charAt(i) == s.charAt(n)) {
a = n;
gefunden = true;
break;
}
}
}
if (gefunden) {
return 1;
}
else {
return -1;
}
}
else {
return -1;
}
}
Mein Gedankengang dazu : Erstmal schaue ich ob der übergebene String kleiner oder gleich groß dem zu untersuchenden String ist ,andernfalls spuckt er -1 raus und die Sache ist gegessen.Im anderen Fall vergleiche ich jeweils das erste Element der einen Schleife mit dem anderen ersten Element (beim ersten Durchgang). Jetzt habe ich ein paar Fallunterscheidungen hier eingeführt unter der Verwendung von zuvor deklarierten Variablen ,jedoch im ersten Durchgang haben die sowieso keinen Einfluss auf die davon betroffenen Methoden weil sie alle auf null und false gesetzt sind. Wenn jetzt also der Wert des einen Strings mit dem des anderen übereinstimmt soll er die aktuelle Stelle (von String s) in a speichern , gefunden auf true setzen und die momentane Schleife abbrechen und wieder in die obige springen. Irgendwie macht er aber was ganz anderes als ich es mir erträumt habe . Naja , die anderen Fallunterscheidungen hatten folgenden Sinn : Wenn "gefunden" zuvor auf true war und jetzt die nächste Stelle vom String mit dem um eins nach rechts verschobenen "n" Wert nicht übereinstimmt soll er wieder mit dem ersten Buchstaben beginnen,indem ich quasi x auf 1 setze als Hilfsvariable, gefunden auf false und die Schleife daraufhin wieder abbrechen lasse(die zweite ). Wenn der Fall eingetreten ist , muss x den Wert 1 haben daraufhin setze ich i auf Null damit er wieder von vorne beginnt.Dieses Mal an einer anderen Stelle in dem zu untersuchenden String. Das mache ich indem ich den Wert wieder in a gespeichert hatte , rechne dann in der anderen if - Schleife dann wieder eins drauf damit es um eins nach rechts verschoben ist und von dort neu zu suchen beginnt. Am Ende soll dann gefunden auf true geblieben sein wenn er was gefunden hat ansonsten halt wieder -1. Ist es möglich mit diesem Ansatz zu machen ? Wenn der Computer das Programm ausführt ? oder sollte ich mir eine komplett neue Strategie überlegen für die Aufgabe ? Wenn ich mir die Musterlösung anschaue hab ich ja keinen wirklichen Lerneffekt ,deshalb versuche ich es so zu machen bevor ich resigniere.
Danke schon mal im voraus !