Seite 1 von 1

Frage zum Programmierprojekt (Testat)

Verfasst: 10. Jul 2012 10:57
von clmx
Hallo,

wir hatten heute morgen unser Testat. Dabei kam heraus, dass unsere methode int punkte falsch sei.
Nun konnte man uns nicht direkt sagen, woran es hakt, deswegen wollte ich hier nochmal nachfragen.

Die Methode haben wir wie folgt geschrieben :

Code: Alles auswählen

public int punkte() {
        int punkte = 0;
        if (w == 4) {        // Bube 20 Punkte 
            punkte = 20;
        }
        if (w == 0 || w == 1 || w == 7) { // Sieben, Acht, Ass 10 Punkte
            punkte = 10;
        }
        else { punkte = 5; }  // Der Rest 5 Punkte
        
        return punkte;
    }
Vielen Dank schonmal !

Re: Frage zum Programmierprojekt (Testat)

Verfasst: 10. Jul 2012 11:09
von mmec
Hallo clmx,

wenn du einen Bube hast (Fall w==4 nehm ich an) werden bei dir 5 Punkte zurück gegeben, weil der Programmfluss noch in den else-Fall der unteren if-Verzweigung geht. Die Variable punkte nimmt also zuerst den Wert 20, jedoch später den Wert 5 an.

Grüße, Johannes

Re: Frage zum Programmierprojekt (Testat)

Verfasst: 10. Jul 2012 20:44
von snoo
Oder anders ausgedrückt:
Für den Fall, dass du einen Buben hast kommt die erste if-Bedingung zum tragen. punkte wird auf 20 gesetzt. Nun geht er zur nächsten if-Bedingung, da die aber false ist wendet er else an. punkte wird überschrieben und bekommt den Wert 5. Diesen gibt er dann am Ende aus.
Das Problem liegt daran, dass dein else zur letzten Bedingung gehört und nicht zu beiden.
Eine einfache Lösung wäre gewesen:

Code: Alles auswählen

public int punkte() {
        if (w == 4) {        // Bube 20 Punkte 
           return 20;
        }
        if (w == 0 || w == 1 || w == 7) { // Sieben, Acht, Ass 10 Punkte
           return 10;
        }
        return 5;     // Jeder andere Fall
    }

Beachte, dass sofern eine der ersten beiden Bedingungen stimmt die Methode mittels return <Wert> direkt diesen Wert ausgibt und die Methode beendet.