Java Hausaufgabe Strom-Tarifrechner

  • Hallo zusammen,

    habe wieder ein kleines Problem bei meinen Hausaufgaben.

    Aufgabe ist es:

    Stromrechnung
    Man soll Tarif 1 und Tarif 2 ausrechnen diesen runden und anschließend den billigeren darstellen.
    Habe bisher den Tarif 1 ausgerechnet und kriege ein Ergebnis von 899.6114.

    Mein Ergebnis soll 899,61 lauten. Komme leider nicht weiter und würde mich über einen Tipp freuen

    Hier bisher meine Arbeit:

    Desweiteren brauche ich noch Hilfe bei der Ergebnisanzeige. Wie kriege ich ohne if und else hin, dass immer das billigste Ergebnis angezeigt wird ?
    Die ganzen System.out.print.. sind nur zur besseren Darstellung der Zwischenwerte.

    Ziel der Aufgabe ist es, nur in einem einzigen System.out.print den billigeren von den beiden Tarifen zu zeigen.

    If-Anweisungen haben wir noch nicht gemacht und deshalb nicht benutzbar. Ich darf nur den Bedingungsoperator "_ ? _ : _" benutzen aber habe damit noch keinen logischen Weg gefunden.
    Mein Ergenis ist ja 899.6114 aber wenn ich das ausgeben lasse habe ich ja 4 Nachkommastellen, der Centbetrag soll aber nur 2 Stellen haben also 899,61.

    Vielen dank für eure Hilfe!
    P.s
    Muss bis 18 Uhr abgegeben werden :)

  • Hallo,

    Der Fragezeichenoperator ist doch eine Kurzform der if-then-else-Anweisung. Du könntest etwas wie

    c = (a < b) ? a : b;

    benutzen (falls a kleiner als b ist, weise c den Wert von a zu, anderenfalls weise c den Wert von b zu). Zum Runden könntest du java.lang.Math.round() benutzen (wobei du dein Ergebnis erst mit der passenden Zehnerpotenz multiplizieren und nach dem Runden wieder durch diese Zehnerpotenz dividieren musst).

    Hoffe dass dir das weiterhilft.

    lg

    • Offizieller Beitrag

    Hi,
    Runden auf zwei Nachkommastellen kann man das Ergebnis auf mehrere Arten:
    1. Mit Math.round(x * 100) / 100
    2. Du multiplizierst mit 100, addierst 0,5 (dadurch wird nicht immer abgerundet), wandelst es dann in int um, dann zurück in float und teilst dann wieder durch 100
    3. Mit System.out.printf("%.2f", wert)

    Zitat

    Ich darf nur den Bedingungsoperator "_ ? _ : _" benutzen


    Das ist dann ja quasi ein if ;)

    System.out.println("Billigstes Angebot: " + ((rechnung1 < rechnung2) ? rechnung1 : rechnung2) );

    LG nif7

    P.S.: HarryPotter war schneller, aber vllt. hilft das dir ja noch zusätzlich weiter ;)

    Menschen, die etwas wollen, finden Wege. Menschen, die etwas nicht wollen, finden Gründe.