Überprüfen ob String Array leer ist

Hallo1234

Bekanntes Mitglied
Hallo, das ist die Aufgabe:

For every good kata idea there seem to be quite a few bad ones!
In this kata you need to check the provided array (x) for good ideas 'good' and bad ideas 'bad'. If there are one or two good ideas, return 'Publish!', if there are more than 2 return 'I smell a series!'. If there are no good ideas, as is often the case, return 'Fail!'.

Das ist mein Code dazu:
Java:
            String[] x = {};

            int count0 = 0;

            String r = "";

            for(int i=0; i<x.length; i++){
                if(x[i].equals("good")){
                    count0++;

                }if(count0 <= 2 && count0 != 0) {
                    r = "Publish!";
                }else if(count0 > 2) {
                    r = "I smell a series!";
                }else if(count0 == 0 || x.length <= 0) {
                    r = "Fail!";
                }
            }
            //System.out.println(count0);
            return r;

Es funktioniert in Eclipse, aber nicht bei Codewars. Meine Vermutung ist, dass auch auf ein leeres Array überprüft wird, weshalb ich beim letzten else if noch das "...|| x.length <=0" hinzugefügt habe. Dadurch ist das Problem leider noch nicht gelöst. So sieht der Error aus:
1628168928450.png
Ich weiß jetzt wirklich nicht mehr, woran es liegen könnte. Vielleicht kann mir da jemand aushelfen.
Vielen Dank
 
Ich bin jetzt nicht ganz sicher, was dieser fehlschlagende Test macht, aber das Problem ist ja offensichtlich, dass ein leerer String anstatt "Fail!" ausgegeben wird.
Das bedeutet, dass keine deiner If Abfragen zutrifft und einfach das leere r vom Anfang zurückgegeben wird. Vielleicht ist hier schon die Lösung, dass du r Standardmäßig oben auf "Fail" setzt und die ganze zusätzliche Abfrage für das Fail weg lässt. Dann kann es zumindest nicht mehr passieren, dass ein leerer String rauskommt.

PS: Ich hatte mir nach der letzten Frage hier zu Codewars mal die Seite angesehen. Man kann sich bei den Übungen auch die Testklasse ansehen. Zur not kann man da dann ja genau sehen, was der Test macht und warum er dann fehlschlägt.

PPS: Bei genauerer Betrachtung deines Codes ist mir noch aufgefallen, dass dein x.length <=0 am Ende keinen Effekt hat, weil die For-Schleife ja gar nicht erst betreten wird, wenn die Länge = 0 ist.
 
Versuchs mal mit einer zusätzlichen if-Anweisung if (x.length != 0) vor der for-Schleife und r = "Fail!"; danach.

Edit: Hab gerade gemerkt das dass so nicht klappt, weil dann als letztes der String immer auf Fail gesetzt wird.
 
Zuletzt bearbeitet:
Ich bin jetzt nicht ganz sicher, was dieser fehlschlagende Test macht, aber das Problem ist ja offensichtlich, dass ein leerer String anstatt "Fail!" ausgegeben wird.
Das bedeutet, dass keine deiner If Abfragen zutrifft und einfach das leere r vom Anfang zurückgegeben wird. Vielleicht ist hier schon die Lösung, dass du r Standardmäßig oben auf "Fail" setzt und die ganze zusätzliche Abfrage für das Fail weg lässt. Dann kann es zumindest nicht mehr passieren, dass ein leerer String rauskommt.

PS: Ich hatte mir nach der letzten Frage hier zu Codewars mal die Seite angesehen. Man kann sich bei den Übungen auch die Testklasse ansehen. Zur not kann man da dann ja genau sehen, was der Test macht und warum er dann fehlschlägt.

PPS: Bei genauerer Betrachtung deines Codes ist mir noch aufgefallen, dass dein x.length <=0 am Ende keinen Effekt hat, weil die For-Schleife ja gar nicht erst betreten wird, wenn die Länge = 0 ist.
Habe r zu "Fail!" geändert. Jetzt klappt es auch bei Codewars. Danke für deine Hilfe : )
Ja die Testklasse ist in vielen Fällen hilfreich, nur hier gab es kein Beispiel mit leerem Array, aber es funktioniert jetzt zum Glück.
 

Zurück
Oben