Methoden Probleme mit Bußgeldaufgabe

Love92

Mitglied
Hey,

ich bin noch ganz neu mit der Java Programmierung und bin am verzweifeln bei einer Hausaufgabe.
Und zwar sollen wir Bußgeld berechnen.
Übergeben werden soll: die zulässige Höchstgeschwindigkeit, die gefahrene Geschwindigkeit (anzurechnender Wert) und innerhalb einer Ortschaft (Ja/Nein)
Ausgegeben werden soll auf der Konsole: Bußgeld, ggf. Punkte und ggf. Fahrverbot.
Außerdem soll der Bußgeldbetrag zurückgegeben werden.

Ich komme momentan mit boolean gar nicht klar und weiß nicht wie ich das mit der Ortschaft da reinbringen soll. Bisher habe ich das Bußgeld für Innerorts programmiert, allerdings gibt es da auch mit return noch Schwierigkeiten, die mich echt zum verzweifeln bringen :(

So sieht es momentan aus (außerorts fehlt noch):

public double bussgeldBerechnen(int zulaessig, int gefahren, boolean ortschaft)
{
int zhg;
int zulaessig2;
zulaessig2 = zulaessig - 3;
zhg = gefahren - zulaessig2;
if (zhg <= 10)
System.out.println("Das Bussgeld betraegt 15 Euro.");
return 15;
if ((zhg>10) && (zhg<=15))
System.out.println("Das Bussgeld betraegt 25 Euro.");
return 25;
if ((zhg>15) && (zhg<=20))
System.out.println("Das Bussgeld betraegt 35 Euro.");
return 35;
if ((zhg>20) && (zhg<=25))
System.out.println("Das Bussgeld betraegt 80 Euro und es gibt 1 Punkt in Flensburg.");
return 80;
if ((zhg>25) && (zhg<=30))
System.out.println("Das Bussgeld betraegt 100 Euro und es gibt 3 Punkte in Flensburg.");
return 100;
if ((zhg>30) && (zhg<=40))
System.out.println("Das Bussgeld betraegt 160 Euro, es gibt 3 Punkte in Flensburg und einen Monat Fahrverbot.");
return 160;
if ((zhg>40) && (zhg<=50))
System.out.println("Das Bussgeld betraegt 200 Euro, es gibt 4 Punkte in Flensburg und einen Monat Fahrverbot.");
return 200;
if ((zhg>50) && (zhg<=60))
System.out.println("Das Bussgeld betraegt 280 Euro, es gibt 4 Punkte in Flensburg und 2 Monate Fahrverbot.");
return 280;
if ((zhg>60) && (zhg<=70))
System.out.println("Das Bussgeld betraegt 480 Euro, es gibt 4 Punkte in Flensburg und 3 Monate Fahrverbot.");
return 480;
if (zhg>70)
System.out.println("Das Bussgeld betraegt 680 Euro, es gibt 4 Punkte in Flensburg und 3 Monate Fahrverbot.");
return 680;

}
}

BITTE BITTE HELFT MIR! :(
 

diggaa1984

Top Contributor
Bitte füge deinen Code in den entsprechenden Java-Tags ein und beachte eine korrekte Einrückung, dann liest es sich auch leichter für uns!
 

Love92

Mitglied
Java:
public double bussgeldBerechnen(int zulaessig, int gefahren, boolean ortschaft)
{
int zhg;
int zulaessig2;
zulaessig2 = zulaessig - 3;
zhg = gefahren - zulaessig2;
if (zhg <= 10)
System.out.println("Das Bussgeld betraegt 15 Euro.");
return 15;
if ((zhg>10) && (zhg<=15))
System.out.println("Das Bussgeld betraegt 25 Euro.");
return 25;
if ((zhg>15) && (zhg<=20))
System.out.println("Das Bussgeld betraegt 35 Euro.");
return 35;
if ((zhg>20) && (zhg<=25))
System.out.println("Das Bussgeld betraegt 80 Euro und es gibt 1 Punkt in Flensburg.");
return 80;
if ((zhg>25) && (zhg<=30))
System.out.println("Das Bussgeld betraegt 100 Euro und es gibt 3 Punkte in Flensburg.");
return 100;
if ((zhg>30) && (zhg<=40))
System.out.println("Das Bussgeld betraegt 160 Euro, es gibt 3 Punkte in Flensburg und einen Monat Fahrverbot.");
return 160;
if ((zhg>40) && (zhg<=50))
System.out.println("Das Bussgeld betraegt 200 Euro, es gibt 4 Punkte in Flensburg und einen Monat Fahrverbot.");
return 200;
if ((zhg>50) && (zhg<=60))
System.out.println("Das Bussgeld betraegt 280 Euro, es gibt 4 Punkte in Flensburg und 2 Monate Fahrverbot.");
return 280;
if ((zhg>60) && (zhg<=70))
System.out.println("Das Bussgeld betraegt 480 Euro, es gibt 4 Punkte in Flensburg und 3 Monate Fahrverbot.");
return 480;
if (zhg>70)
System.out.println("Das Bussgeld betraegt 680 Euro, es gibt 4 Punkte in Flensburg und 3 Monate Fahrverbot.");
return 680;

}
}
 

FetterOtter

Bekanntes Mitglied
Also, wenn du mit "zulaessig - 3" 3 km/h Kulanz berücksichtigen willst, musst du "+ 3" rechnen.
Außerdem müssen deine println und returns jeweils in Klammern stehen, sonst haut er beim ersten return ab.
 

Love92

Mitglied
Also das mit den Klammern funktioniert nicht. Dann sagt er mir immer 'illegal start of expression' und wenn ich es so lasse, dann sagt er mir bei zweiten if 'unreachable statement' :(
 
S

SlaterB

Gast
die inneren Klammern können weg,
if (zhg>15 && zhg<=20) statt if ((zhg>15) && (zhg<=20))

das ist jetzt zwar Luxus und manchmal eher gefährlich,
bei so vielen Zeilen hintereinander lohnt sich aber schon das Nachdenken, evtl. Nachschlagen, bisschen auch an der Form arbeiten

allerdings geht es hier eh noch etwas einfacher, da mit return abgebrochen wird kannst du dir die untere Grenze sparen:

Java:
if (zhg<=15) {
... return
}
// danach garantiert > 15
if (zhg<=20) {
... return
}

usw.

oder mit else, spart auch bisschen Wiederholung der Grenzen:
Java:
if (zhg<=15) {
... evtl. ohne return
} else if (zhg<=20) {
... evtl. ohne return
} ...




nach innerorts notfalls mit einem ganz großen if/ else unterscheiden:
Java:
if (innerorts) {

// 30 Zeilen Geschwindigkeit

} else {

// 30 Zeilen Geschwindigkeit, else evtl. unnötig wenn das if immer mit return beendet wird

}
ob es einfacher geht kann man höchstens sagen wenn alles Fälle bekannt sind


> Also das mit den Klammern funktioniert nicht. Dann sagt er mir immer 'illegal start of expression' und wenn ich es so lasse, dann sagt er mir bei zweiten if 'unreachable statement'

super, kein Code gepostet und andere dürfen raten,
oder wir einigen uns dass Java eine Sprache ohne Klammern ist, auch gut
 

Love92

Mitglied
Das ist schon mal ganz gut, wenn ich es übersichtlicher haben will, das ändert aber leider noch nichts an dem Problem, was ich mit return habe. :/
 
S

SlaterB

Gast
und dieses Problem wird sich auch nicht (hier) ändern, solange du deinen Code nicht postest
(den neuen mit Klammern, EIN Fall reicht, nicht gleich wieder hunderte gleichförmige untereinander,
Fleiß ist oft hilfreich, aber tausend Zeilen schreiben von denen dann die erste nicht geht um danach alle weiteren 999 zu ändern, das ist nicht schlau)
 

Love92

Mitglied
Java:
public class Bussgeld
{
   /**
     * berechnet Bussgeld, Punkte und Fahrverbot
     * 
     * @param  zulaessig, gefahren, ortschaft  
     * @return bussgeld    zu zahlende Summe
     */
    public double bussgeldBerechnen(int zulaessig, int gefahren, boolean ortschaft)
    {
        int zhg;
        int zulaessig2;
        zulaessig2 = zulaessig + 3;
        zhg = gefahren - zulaessig2;
        if (ortschaft)
        {
        if (zhg<=10)
            return 15;
        System.out.println("Das Bussgeld betraegt 15 Euro.");
        if (zhg<=15)
            return 25;
        System.out.println("Das Bussgeld betraegt 25 Euro.");
        if (zhg<=20)
            return 35;
        System.out.println("Das Bussgeld betraegt 35 Euro.");
        if (zhg<=25)
            return 80;
        System.out.println("Das Bussgeld betraegt 80 Euro und es gibt 1 Punkt in Flensburg.");
        if (zhg<=30)
            return 100;
        System.out.println("Das Bussgeld betraegt 100 Euro und es gibt 3 Punkte in Flensburg.");
        if (zhg<=40)
            return 160;
        System.out.println("Das Bussgeld betraegt 160 Euro, es gibt 3 Punkte in Flensburg und einen Monat Fahrverbot.");
        if (zhg<=50)
            return 200;
        System.out.println("Das Bussgeld betraegt 200 Euro, es gibt 4 Punkte in Flensburg und einen Monat Fahrverbot.");
        if (zhg<=60)
            return 280;
        System.out.println("Das Bussgeld betraegt 280 Euro, es gibt 4 Punkte in Flensburg und 2 Monate Fahrverbot.");
        if (zhg<=70)
            return 480;
        System.out.println("Das Bussgeld betraegt 480 Euro, es gibt 4 Punkte in Flensburg und 3 Monate Fahrverbot.");
        if (zhg>70)
            return 680;
        System.out.println("Das Bussgeld betraegt 680 Euro, es gibt 4 Punkte in Flensburg und 3 Monate Fahrverbot.");
        }
        else
        {
        if (zhg<=10)
            return 10;
        System.out.println("Das Bussgeld betraegt 10 Euro.");
        if (zhg<=15)
            return 20;
        System.out.println("Das Bussgeld betraegt 20 Euro.");
        if (zhg<=20)
            return 30;
        System.out.println("Das Bussgeld betraegt 30 Euro.");
        if (zhg<=25)
            return 70;
        System.out.println("Das Bussgeld betraegt 70 Euro und es gibt 1 Punkt in Flensburg.");
        if (zhg<=30)
            return 80;
        System.out.println("Das Bussgeld betraegt 80 Euro und es gibt 3 Punkte in Flensburg.");
        if (zhg<=40)
            return 120;
        System.out.println("Das Bussgeld betraegt 120 Euro und es gibt 3 Punkte in Flensburg.");
        if (zhg<=50)
            return 160;
        System.out.println("Das Bussgeld betraegt 160 Euro, es gibt 3 Punkte in Flensburg und einen Monat Fahrverbot.");
        if (zhg<=60)
            return 240;
        System.out.println("Das Bussgeld betraegt 240 Euro, es gibt 4 Punkte in Flensburg und einen Monat Fahrverbot.");
        if (zhg<=70)
            return 440;
        System.out.println("Das Bussgeld betraegt 440 Euro, es gibt 4 Punkte in Flensburg und 3 Monate Fahrverbot.");
        if (zhg>70)
        System.out.println("Das Bussgeld betraegt 600 Euro, es gibt 4 Punkte in Flensburg und 3 Monate Fahrverbot.");
            return 600;
        }    
    }
}

Jetzt klappt das mit dem return überall, nur bei der vorletzten geschweiften Klammer zu, sagt mir BlueJ jetzt 'missing return statement'
 

FetterOtter

Bekanntes Mitglied
Durch die ifs machst du nur bedingte returns. Es wird jedoch auf jeden Fall ein return-Statement erwartet.
Da du für die einzelnen ifs immer noch keine geschweiften Klammern hast, können deine println aber nicht hinhauen, oder?
 

Love92

Mitglied
Also soll ich für JEDES einzelne if eine Klammer machen? Aber dann brauche ich am Ende doch auch ein return?! Da soll aber keins hin :/
 

FetterOtter

Bekanntes Mitglied
Dann musst du mit else if bzw. im letzten Fall mit else arbeiten. Und ja, du brauchst die Klammern, wenn du nach einer Abfrage mehr als 1 Statement ausführen willst.
 
S

SlaterB

Gast
wie gesagt: zu JEDEM if als Anfänger gehören IMMER zwei geschweifte Klammern, da hast du noch viel zu wenige,

die Ausgaben stehen im Moment als normale Code-Zeilen, bei hoher Geschwindigkeit bekommt man zahlreiche angezeigt,
die richtige allerdings nie, denn die steht immer NACH dem return, und bei return ist ja Schluss

programmiere doch erstmal EIN (um nochmal zu schreien ;) ) if korrekt, teste es auch, danach nach und nach ausbauen

> missing return statement

beim letzten if (zhg>70) hast du noch die Ausgabe, das return danach steht ohne Bedingung,
der ortschaft-else-Fall wird immer beendet

beim ortschaft-if-Fall steht das letzte return im if (zhg>70) mit drin,
der Compiler kann nicht wissen, dass zusammen mit den anderen Bedingungen alle Werte abgedeckt sind,
was passiert wenn dieses if nicht erfüllt ist, was soll die Methode dann zurückgeben?

im Grunde ist es besser, ganz am Ende (der beiden Hauptfälle, ortschaft ja oder nein) gar kein if zu haben,
schreibe vielleicht als Kommentar 'wenn bisher kein Abbruch, dann zhg > 70' und den Rest einfach so, ohne if
 

Love92

Mitglied
Java:
public class Bussgeld
{
   /**
     * berechnet Bussgeld, Punkte und Fahrverbot
     * 
     * @param  zulaessig, gefahren, ortschaft  
     * @return bussgeld    zu zahlende Summe
     */
    public double bussgeldBerechnen(int zulaessig, int gefahren, boolean ortschaft)
    {
        int zhg;
        int zulaessig2;
        zulaessig2 = zulaessig + 3;
        zhg = gefahren - zulaessig2;
        ortschaft = true;
        {if (zhg<=10)
        System.out.println("Das Bussgeld betraegt 15 Euro.");
            return 15;}
        {if (zhg<=15)
        System.out.println("Das Bussgeld betraegt 25 Euro.");
            return 25;}
        {if (zhg<=20)
        System.out.println("Das Bussgeld betraegt 35 Euro.");
            return 35;}
        {if (zhg<=25)
        System.out.println("Das Bussgeld betraegt 80 Euro und es gibt 1 Punkt in Flensburg.");
            return 80;}
        {if (zhg<=30)
        System.out.println("Das Bussgeld betraegt 100 Euro und es gibt 3 Punkte in Flensburg.");
            return 100;}
        {if (zhg<=40)
        System.out.println("Das Bussgeld betraegt 160 Euro, es gibt 3 Punkte in Flensburg und einen Monat Fahrverbot.");
            return 160;}
        {if (zhg<=50)
        System.out.println("Das Bussgeld betraegt 200 Euro, es gibt 4 Punkte in Flensburg und einen Monat Fahrverbot.");
            return 200;}
        {if (zhg<=60)
        System.out.println("Das Bussgeld betraegt 280 Euro, es gibt 4 Punkte in Flensburg und 2 Monate Fahrverbot.");
            return 280;}
        {if (zhg<=70)
        System.out.println("Das Bussgeld betraegt 480 Euro, es gibt 4 Punkte in Flensburg und 3 Monate Fahrverbot.");
            return 480;}
        {if (zhg>70)
        System.out.println("Das Bussgeld betraegt 680 Euro, es gibt 4 Punkte in Flensburg und 3 Monate Fahrverbot.");
            return 680;}
        
        ortschaft = false;
        {if (zhg<=10)
        System.out.println("Das Bussgeld betraegt 10 Euro.");
            return 10;}
        {if (zhg<=15)
        System.out.println("Das Bussgeld betraegt 20 Euro.");
            return 20;}
        {if (zhg<=20)
        System.out.println("Das Bussgeld betraegt 30 Euro.");
            return 30;}
        {if (zhg<=25)
        System.out.println("Das Bussgeld betraegt 70 Euro und es gibt 1 Punkt in Flensburg.");
            return 70;}
        {if (zhg<=30)
        System.out.println("Das Bussgeld betraegt 80 Euro und es gibt 3 Punkte in Flensburg.");
            return 80;}
        {if (zhg<=40)
        System.out.println("Das Bussgeld betraegt 120 Euro und es gibt 3 Punkte in Flensburg.");
            return 120;}
        {if (zhg<=50)
        System.out.println("Das Bussgeld betraegt 160 Euro, es gibt 3 Punkte in Flensburg und einen Monat Fahrverbot.");
        return 160;}
        {if (zhg<=60)
        System.out.println("Das Bussgeld betraegt 240 Euro, es gibt 4 Punkte in Flensburg und einen Monat Fahrverbot.");
            return 240;}
        {if (zhg<=70)
        System.out.println("Das Bussgeld betraegt 440 Euro, es gibt 4 Punkte in Flensburg und 3 Monate Fahrverbot.");
            return 440;}
        {if (zhg>70)
        System.out.println("Das Bussgeld betraegt 600 Euro, es gibt 4 Punkte in Flensburg und 3 Monate Fahrverbot.");
            return 600;}
    }
}

Ich hab jetzt jedes if in einer Klammer und TROTZDEM zeigt er mit nach dem ersten return wieder 'unreachable statement' an. Das kann doch nicht wahr sein :///
 

ARadauer

Top Contributor
Java:
{if (zhg<=40)

;-) ich nehme mal an das ist ein troll versuch, oder?
Du wirst doch irgendwo in deinen unterlagen ein if stehen haben oder? bzw slater hats auch schon hingeschrieben....
 

FetterOtter

Bekanntes Mitglied
Die geschweifte Klammer-auf kommt hinter if(...)

Java:
if (zhg<=10)
{
   System.out.println("Das Bussgeld betraegt 15 Euro.");
   return 15;
}
 
S

SlaterB

Gast
weiter fraglich, jeden Versuch zigmal hintereinander zu schreiben,
vielleicht bringt dich die unnütze Arbeit weg vom Fließband, hin zur kreativen Tätigkeit, darum geht es beim Programmieren übrigens,

und nun kann ich ja auch mal hinschreiben, was in jedem Lehrbuch lockerleicht auf den ersten Seiten steht,
wie du es bei ortschaft zuvor auch richtig hattest, deine neue Variante ohne if mit Zuweisung true/ false ist dagegen fragwürdig..:
ein if geht so:
Java:
if (bedingung) {
  Befehl1;
  Befehl2;
}
nix mit Klammer vor dem if,
-------

fange dein Programm nicht mit Massen an Fehlern sondern kleinen aber richtigen Code an,
auch korrekte Einrückung macht durchaus guten Eindruck

Java:
public double bussgeldBerechnen(int zulaessig, int gefahren, boolean ortschaft) {
       int zhg;
       int zulaessig2;
       zulaessig2 = zulaessig + 3;
       zhg = gefahren - zulaessig2;
  
       if (zhg<=10) {
              System.out.println("Das Bussgeld betraegt 15 Euro.");
              return 15;
       }
       // Rest, später besser
       System.out.println("Höchststrafe: 9999");
       return 9999;
}
auch mal ausführen, klappen die 15?

danach kannst du 1-2 weitere zhg-Fälle einbauen,
vielleicht auch lieber ortschaft unterscheiden, was auch immer,
jedenfalls in Ruhe sauber testen, nicht gleich die Methode an Code untergehen lassen bevor nicht klar ist wie ein if funktioniert
 

Love92

Mitglied
Danke! Ich hab ja gesagt ich bin Anfänger. Ich muss das in der Uni belegen und versuche auch alles, dass ich es verstehe und hinbekomme, aber irgendwie ist das einfach nicht so meins. Ich kanns einfach nicht, trotz des ganzen lernens :(
Aber jetzt klappt es endlich! Danke!
 

ARadauer

Top Contributor
Ich muss das in der Uni belegen und versuche auch alles, dass ich es verstehe und hinbekomme, aber irgendwie ist das einfach nicht so meins. Ich kanns einfach nicht, trotz des ganzen lernens :(

Was studierst du? Wenn ein Student alleine kein If in java schafft.... ist das schon ein Problem.
Wir haben das mit 11 Jahren in der Hauptschule gelernt...
 

Love92

Mitglied
Ich habs nie belegt im Gymnasium, also ist das neu für mich. Und die Erklärungen sind total irreführend. Ich studiere Medienwissenschaften.
 
H

hüteüberhüte

Gast
Ich hab mich mal da durchgewurschtelt:
Java:
    /**
     * Berechnet Bussgeld, Punkte und Fahrverbot.
     * 
     * innerhalb geschlossener Ortschaften (gilt auch für 30 km-Zone !)
     * bis 10 km/h  15,- EUR
     * 11-15 km/h  25,- EUR
     * 16-20 km/h  35,- EUR
     * 21-25 km/h 80,- EUR, 1 Punkt
     * 26-30 km/h 100,- EUR, 3 Punkte
     * 31-40 km/h 160,- EUR, 3 Punkte, 1 Monat Fahrverbot
     * 41-50 km/h 200,- EUR, 4 Punkte, 1 Monat Fahrverbot
     * 51-60 km/h 280,- EUR, 4 Punkte, 2 Monate Fahrverbot
     * 61-70 km/h 480,- EUR, 4 Punkte, 3 Monate Fahrverbot
     * über 70 km/h 680,- EUR, 4 Punkte, 3 Monate Fahrverbot
     * 
     * außerhalb geschlossener Ortschaften (z.B. Landstraße, Autobahn, auch in Baustellen)
     * bis 10 km/h  10,- EUR
     * 11-15 km/h  20,- EUR
     * 16-20 km/h  30,- EUR
     * 21-25 km/h  70,- EUR, 1 Punkt
     * 26-30 km/h 80,- EUR, 3 Punkte
     * 31-40 km/h 120,- EUR, 3 Punkte
     * 41-50 km/h 160,- EUR, 3 Punkte, 1 Monat Fahrverbot
     * 51-60 km/h 240,- EUR, 4 Punkte, 1 Monat Fahrverbot
     * 61-70 km/h 440,- EUR, 4 Punkte, 2 Monate Fahrverbot
     * über 70 km/h 600,- EUR, 4 Punkte, 3 Monate Fahrverbot 
     * 
     * @param  zulaessig, gefahren, ortschaft  
     * @return Bussgeld, Punkte, Fahrverbot
     */
    public static int[] bussgeldBerechnen(int zulaessig, int gefahren, boolean ortschaft) {
        gefahren = (int) Math.round(gefahren * 0.97);
        int zuSchnell = gefahren - zulaessig;
        System.out.printf("zu schnell: %d km/h\n", zuSchnell);
        if (ortschaft) {
            if (zuSchnell <= 0) {
                return druckeUndGibBussgeld(0, 0, 0);
            }
            if (zuSchnell <= 10) {
                return druckeUndGibBussgeld(15, 0, 0);
            }
            if (zuSchnell <= 15) {
                return druckeUndGibBussgeld(25, 0, 0);
            }
            if (zuSchnell <= 20) {
                return druckeUndGibBussgeld(35, 0, 0);
            }
            if (zuSchnell <= 25) {
                return druckeUndGibBussgeld(80, 0, 0);
            }
            if (zuSchnell <= 30) {
                return druckeUndGibBussgeld(100, 3, 0);
            }
            if (zuSchnell <= 40) {
                return druckeUndGibBussgeld(160, 3, 1);
            }
            if (zuSchnell <= 50) {
                return druckeUndGibBussgeld(200, 4, 1);
            }
            if (zuSchnell <= 60) {
                return druckeUndGibBussgeld(280, 4, 2);
            }
            if (zuSchnell <= 70) {
                return druckeUndGibBussgeld(480, 4, 3);
            }
            return druckeUndGibBussgeld(680, 4, 3);
        } else {
            if (zuSchnell <= 0) {
                return druckeUndGibBussgeld(0, 0, 0);
            }
            if (zuSchnell <= 10) {
                return druckeUndGibBussgeld(10, 0, 0);
            }
            if (zuSchnell <= 15) {
                return druckeUndGibBussgeld(20, 0, 0);
            }
            if (zuSchnell <= 20) {
                return druckeUndGibBussgeld(30, 0, 0);
            }
            if (zuSchnell <= 25) {
                return druckeUndGibBussgeld(70, 1, 0);
            }
            if (zuSchnell <= 30) {
                return druckeUndGibBussgeld(80, 3, 0);
            }
            if (zuSchnell <= 40) {
                return druckeUndGibBussgeld(120, 3, 0);
            }
            if (zuSchnell <= 50) {
                return druckeUndGibBussgeld(160, 3, 1);
            }
            if (zuSchnell <= 60) {
                return druckeUndGibBussgeld(240, 4, 1);
            }
            if (zuSchnell <= 70) {
                return druckeUndGibBussgeld(440, 4, 2);
            }
            return druckeUndGibBussgeld(600, 4, 3);
        }
    }

    private static int[] druckeUndGibBussgeld(int bussgeld, int punkte, int fahrverbot) {
        if (fahrverbot > 0) {
            System.out.printf("%d,- EUR, %d Punkt(e), %d Monat(e) Fahrverbot\n", bussgeld, punkte, fahrverbot);
        } else if (punkte > 0) {
            System.out.printf("%d,- EUR, %d Punkt(e)\n", bussgeld, punkte);
        } else {
            System.out.printf("%d,- EUR\n", bussgeld);
        }
        return new int[]{bussgeld, punkte, fahrverbot};
    }

    public static void main(String[] args) {
        Random r = new Random();
        for (int i = 0; i < 3; i++) {
            int zulaessig = r.nextInt(91) + 30;       //  30..120
            int gefahren = zulaessig + r.nextInt(81); // + 0..80
            boolean ortschaft = r.nextInt(3) == 0;    //   1/3
            System.out.print("zulässig: " + zulaessig);
            System.out.print(", gefahren: " + gefahren);
            System.out.println(", ortschaft: " + ortschaft);
            System.out.println(Arrays.toString(bussgeldBerechnen(zulaessig, gefahren, ortschaft)));
            System.out.println();
        }
    }
Es kann sein, dass irgendwo ein Zahlendreher drin ist.
 

Neue Themen


Oben