kurze frage: Ohne index.of position von string angeben

Müllermilch

Mitglied
hey leute,

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.

wie stelle ich das an?

danke schonmal für eure hilfe
 
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:
    public static void main(String[] args) {

        try {
            BufferedReader input = new BufferedReader(new InputStreamReader(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 ...
 
Zuletzt bearbeitet:
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.
 
was spricht eigentlich gegen
Code:
String.contains()
?

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 😀
 
Zuletzt bearbeitet:
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 😉

@andi contains hatten wir noch nicht
 
Zuletzt bearbeitet:
Java:
for(int i = 0; i != 10; i++){
   if(i == 10){
      System.out.println("If you see this, i shit bricks");
   }
}

Fällt dir was auf?
 
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.
 
sollte eig. in einer halben stunde fertig sein -.-

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!
 

Zurück
Oben