Hallo. Ich habe mir ein Text-Adventure-Code beschafft und schau mir den schon seit ein paar Tagen an und versuche so manche Sachen nachzuprogrammieren. Ich versteh hier etwas nicht, könnt ihr mir sagen was das Problem ist?
Code sollte verständlich sein. Ist eine Input-Methode, mit der man ein Wort eingibt, wenn man ein anderes Wort als Affe eingibt kommt ein Fehler in Form von einem Print-Befehl. Wenn man jedoch Affe eingibt, dann sollte halt ein Print kommen mit einer Erfolgsmeldung.
Aus irgendeinem Grund will der die eingabe nach "Affe" in der boolean-methode ganz unten nicht abchecken. Im Beispiel-Code fragt der dort aber auch Strings ab und es funktioniert auch.
Habe als Test auch ein "System.quit(0)" ganz unten reingepackt, aber das Programm beendet sich nicht mal.
Das liefert 'false', wenn input=null ist, anstelle einer NullPointerException...
Joose: habe deine zwei Beiträge zusammengefasst, bitte beachte das du deinen Beitrag noch eine Zeit lang editieren kannst nachdem du ihn gepostet hast
Und genau das will man nicht haben.
Wenn Eingabefehler auftreten, müssen diese behandelt werden. Wenn du das in einem größeren Programm machst, kriegst du irgendwo Fehler, weißt aber nicht woher die kommen, weil du eben keine NPE bekommst.
Das ist eine Frage des Standpunkts, und was genau das Programm machen soll.
Egal welchen Weg man geht - es muss dann eben dokumentiert sein.
Und der Verwender muss die Doku eben auch lesen...
Eine Methode .isKeyWord ist ähnlich einer .equals, und die soll für .equals(null) 'false' zurückliefern, und nicht Fehler schmeißen.
Das sehe ich nicht so. equals beschreibt die Beziehung zwischen diesem Objekt und einem beliebigen übergebenen. Und wenn null übergeben wird, dann ist das wohl ein valider Parameter.
Bei isKeyWord, erwarte ich ein Wort. null ist kein Wort und demnach auch kein valider Parameter. Wenn mir null übergeben wird, würde ich das für einen Fehler im Programm halten und dementsprechend eine NPE werfen. Zumal dieser Fall niemals eintreten sollte, würde man wohl vorher schon auf null Prüfen, da man dann diese Methode eh nicht mehr aufrufen müsste.
jo. Also was ich so beim durchlesen bemerkt habe:
1. Zeile 37 Sollte "eingabe.equals("Affe")" stehen.
2. Zeile 26 reicht "esGibtEinKeywort(eingabe)"
- Wenn die eingabe nicht > 0 ist kann dort auch nicht "Affe" stehen
3. Zeile 27 sollte "return false;"
- Wenn die Bedingung der vorherigen if-Anweisung erfüllt ist, ist eingabeIstSinnlos ja falsch
4. Zeile 8 public static void input()
- Rückgabetyp der Methode ist String.
Für deinen Code hier unnötig da du ihn nicht verwendest wie z.B. mit System.out.println(input());
5. Zeile 17 if-Anweisung unnötig,
- weil die while-schleife nicht beendet wird, wenn die eingabe nicht Affe ist.