hab eine aufgabe bekommen indem ich zwei schleifen erstellen, und im String: hallo welt die position von z.b. welt ausgeben soll (beide wörter werden im vornherein durch readline eingelesen)
habe das auch bisher alles hinbekommen nur will mein lehrer jetzt das ich das ganze ohne index.of fabriziere.
Schau dir mal die Array Utillities von Java an und setzt dich mal mit der methode des "shiftens" auseinander, also z.B. aus
Code:
[1, 2, 3, 4]
wird [c][2, 3, 4, 1][/c]. Damit sollten sich mindestens 3 neue Wege erschliesen.
EDIT: Ahja, String.substring() und ne einzelne Schleife kann dir da auch helfen.
poste hier mal ein code sagt mir mal bitte ob ich auf dem richtigen weg bin wenn nicht was ich ausbessern muss.
danke
Java:
publicstaticvoidmain(String[] args){try{BufferedReader input =newBufferedReader(newInputStreamReader(System.in));int zähler =0;System.out.println("Bitte geben Sie einen Text ein:");String wort =(input.readLine());System.out.println();//eingabe der zwei buchstaben System.out.println("Bitte geben Sie ein Wort ein:");String wort2 =(input.readLine());for(int i =0; b < wort.length(); i++){for(int y =0; y < wort2.length(); y++){if(??==??){
z++}if(z>0){System.out.println("Das Wort "+wort2+" befindet sich an"???"stelle")}else{System.out.println("nicht im text enthalten");}
EDIT: ich muss zwei schleifen erstellen, mit sub string hatten wir bisher nichts am hut sollte daher auch nicht vorkommen genau so wie index of
Du MUSST zwingend dein Problem zuerst auf Papier lösen - PUNKT (Warum begreift das niemand?)
Du schreibst jeden Schritt auf - das fürt zum Beispiel zum Folgendem:
Ich suche im String den Anfangsbuchstaben des gesuchten Wortes (Tipp: das braucht eine Schleife)
Wenn ich den gefunden habe, prüfe ich (Tipp: mit einer zweiten Schleife - die Erste muss ja möglicherweise an derselben Stelle weiterfahren) jeden einzelne Buchstaben des gesuchten Wortes.
Wenn ich am Ende des gesuchten Wortes angelangt bin, heisst das, das ich es gefunden habe und mache eine Ausgabe.
Wenn ich einen Unterschied feststelle breche ich die Prüfung ab und suche mit der ersten Schleife weiter nach dem Anfangsbuchstaben.
...
Um den Überblick zu wahren würde ich die Prüfung ob nach dem gefundenen Buchstaben das gesuchte Wort folgt, in eine eigene Prozedur packen.
So - und ERST JETZT kann man möglicherweise mit codieren beginnen ...
Sowas nennt sich pseudo-code. Um ein Beispiel zu geben (ein altes von mir, kein bezug zur aufgabe)
Code:
Eine kompliziertere Sortlier-Funtkion
1. Neues array: array_a für alle nicht-erbenden
2. Neues array: array_b für alle erbenden
3. Neues array: array_c für alle Exceptions
4. Schleife in array (x)
4.1 Ist x eine Exception?
4.1a 1 x nach array_c
4.1a 2 continue
4.1 Erbt x?
4.1a 1 x nach array_b
4.1b 1 x nach array_a
5. Schleife in array_b (x)
5.1 Erbt x?
5.1a 1 Ist das parent von x in array_a?
5.1a 1a x ans ende von array_a
5.1a 1b x ans ende von array_b
6. array_c=sort(array_c, false)
=> Die Exceptions werden ebenfalls sortiert und dabei wird
ignoriert, ob sie Exceptions sind => array_c bleibt in
diesem durchlauf leer
7. return array_merge(array_c, array_a);
=> Die Sortierten Exceptions werden vor die Sortierten
klassen gestellt, damit beim schreiben in die Datenbank
alle geworfenen Exceptions da sind
Wenn du dann meinst, dass es so, wie du es dir im Pseudo-Code ausgedacht hast, funktioniert, dann kommt der Java-Code.
Die Tatsache dass zwei loops drin sein müssen - es geht hier wohl nicht um die optimale Lösung, sondern darum, dass sich ein Dozent eine Aufgabe ausgedacht hat um ein ganz bestimmtes Java-Konstrukt zu üben.
Das was Tobse schreibt ist das Resultat der Überlegungen die beschrieben habe ;-)
Sobald ein Gebot von >=20€ vorliegt, liefere ich den Code
komm hier kaum vorwärts is die erste schleife schonmal wenigstens korrekt?
sollte eig. in einer halben stunde fertig sein -.-
Java:
// prüfen ob erster buchstabe übereinstimmt for(i =0; wort.charAt(i)!= wort2.charAt(y); i++){if(wort.charAt(i)== wort2.charAt(y)){
y++;//wenn ja erhöht sich y um 1}
edit: langsam sind mir meine nerven wirklich 19,95 wert
Ja, er zählt es bis 10 hoch, aber dann ist die Bedingung für den Schleifeneintritt false. D.h. beim letzten Schleifendurchlauf hat i den Wert 9. 10 kann nicht sein, da sie dann ja nicht betreten wird. Genau das gleiche in deinem Code: das if da in der Schleife kannst du dir sparen, das wird niemals true ergeben, da das Gegenteil gelten muss, damit du überhaupt zum if gelangst.
Nicht nur eigentlich - für 20€ arbeite ich höchstens 20 Minuten - inklusive Entschädigung für abgenutzte Neven sind die 10 Minuten die ich brauchte 20 € wert.
Was fragst du uns ob es richtig ist?
Nimm einen Debugger - mach einige sysouts rein und dann siehst du doch ob es richtig ist!
Mich nervt deine Passvität! Du hast zwei Hinweise wie man ein solches Problem anpackt, aber NEIN du hockst dich hin hackst irgendwelchen Code rein fragst dann auch noch doof, ist das richtig?
DU musst wissen WAS du machen willst und dann PRÜFEN ob der Code das auch macht - Just do it!