Warum java aufgabe falsch obwohl alle Testläufe funktionieren (siehe Foto)?
Sorry das ich es euch antue aber ich weiß das ist verdammt schwer zu durchblickender code aber er klappt aber bei "other tests" leider nicht, wieso?
mein code in pastebin:
Mit freundlichen Grüßen
4 Antworten
Weil er nicht funktioniert.
countYZ("fez!") returned 0, countYZ("fez!!") gibt aber 1 zurück.
Ich muss ehrlich sagen, so ganz verstehe ich deinen code nicht. Ich hätte das ja mit String.split() in einzelne wörter geteilt, dann die sonderzeichen rausgefiltert und mich um jedes wort einzeln gekümmert.
nope gibt beides 1 HÄÄ ich bin voll verwirrt alttttaaaaaaaa
Oh Boy, du machst dir das aber kompliziert... im Prinzip müsstest du doch nur den String von Position 0 bis (Länge - 1) durchlaufen und jeweils überprüfen, ob das aktuelle Zeichen ein y oder ein z ist und ob das jeweils nächste Zeichen kein Buchstabe ist. Wenn die beiden Bedingungen erfüllt sind - Zähler hoch. Und dann nach der Schleife noch eine Sonderbehandlung für das letzte Zeichen - wenn das y / z ist, dann muss der Zähler nochmal um eins erhöht werden. Ich hab das jetzt nicht getestet, wenn ich einen Denkfehler habe, gerne drauf hinweisen.
In dem Sinne würde ich das Ding komplett neuschreiben und mir - ebenso wie anderswo hier angesprochen - eine Entwicklungsumgebung (Eclipse, Netbeans, ...) zum Debuggen und evtl. auch für Unit-Tests einrichten.
Oha danke ej mir fallen nie so leichte Algorithmen ein immer mach ich’s kompliziert
Naja, in diesem Fall wäre es vielleicht sinnvoll, wenn du Computer, Schleifen und Co. mal vergisst und einfach nachdenkst, wie du die Aufgabe mit Zettel und Stift lösen würdest. Auf dem Zettel steht "Day Fez FEZ! FAY!", wie würdest du vorgehen, wenn du da die Aufgabe erfüllst und alle y/z am Ende eines Wortes zählen sollst. Das Vorgehen wäre mit Sicherheit so, wie ich es im ersten Absatz der Antwort beschreibe. Dann steht der Algorithmus, das Ganze in Code zu gießen ist dann nur noch Handwerk.
oha ej ich will auch so denken können ok danke werd ich nun anwenden wenn ich mal nicht weiß dann stell ich mir das so vor mit Zettel und Stift danke BB
aber ich weiß das ist verdammt schwer zu durchblickender code
und das ist nicht gut. Versuch es doch mal, einfacher zu lösen.
So schwer ist das nicht ;)
aber er klappt aber bei "other tests" leider nicht, wieso?
weil der Test gerade bei diesen paar Beispielen funktioniert, bei den anderen Beispielen (die du nicht siehst) aber fehlschlägt.
btw wenn du interessiert bist und es vergleichen willst, kannst du mal meine Lösung dazu anschauen:
https://github.com/Akumatic/CodingBat
Solltest du natürlich nicht als Musterlösung oder Vorlage verwenden - und es ist natürlich auch nicht immer die beste Lösung
Ich bin mir jetzt nicht ganz sicher dazu müsste ich den Code mal debuggen aber versuche mal den string "day " also mit ein paar Leerzeichen am Ende.
Eclipse oder eine andere Java IDE Installieren und dann in der IDE auf debuggen klicken.
Breakpoint setzen und dann jede Codezeile mit Single Step durchgehen und schaun wo das Programm etwas falsches macht. Debuggen ist eigentlich das kleine 1 mal 1 der Fehlersuche.
Btw ich würde das Programm vereinfachen.
Du kannst zB indexof verwenden um die Indizes von y und z zu bekommen, dann musst du nur noch prüfen ob der nächste Charakter kein Buchstabe ist oder das Ende des Strings und wenn ja zählen.
achsoo ich glaub ich verstehe wieso weil das in die falsche if Bedingung dann geht stimmts