# Stromrechnung Tarifrechner



## shygo (8. Nov 2014)

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:


```
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author admin
 */
public class Stromrechnung {
    
    /**
     * @param args  wird nicht verwendet
     */
    public static void main(String[] args) {
        
        int jahresverbrauch;
        /*In kWh gerechnet*/
        
        float grundpreis1;
        /*Der Monatliche Grundpreis in Euro für Tarif 1*/
        
        float grundpreis2;
        /*Der Monatliche Grundpreis in Euro für Tarif 2*/
        
        int tarif1;
        /*Der monatliche Verbrauchspreis in Cent für Tarif 1*/
        
        int tarif2;
        /*Der monatliche Verbrauchspreis in Cent für Tarif 2*/
        
        float rechnung1;
        /*Das Endresultatfür Tarif 1*/
        
        float rechnung2;
        
        float gerundet;
        
        
        
        jahresverbrauch = 3536;
        tarif1          =  2349;
        tarif2          =  2210;
        grundpreis1     = (float) 5.75 * 12;
        grundpreis2     = (float) 9.85 * 12;
        
        rechnung1 = 2349 * 3536;
        System.out.println(rechnung1);
        
        rechnung1 = rechnung1 / 100;
        System.out.println(rechnung1);
        
        gerundet = (float) 1 / 100 * (100 * rechnung1 + 50);
        System.out.println(gerundet); /*83061.14*/
        
        gerundet = gerundet / 100;
        System.out.println(gerundet); /*830.6114*/
        
        rechnung1 = grundpreis1 + gerundet;
        System.out.println(rechnung1); /*899.6114*/
        
        
        
        
        rechnung2 = 2210 * 3536;
        System.out.println(rechnung2);
        
        rechnung2 = rechnung2 / 100;
        System.out.println(rechnung2);
        
        gerundet = (float) 1 / 100 * (100 * rechnung2 + 50);
        System.out.println(gerundet); 
        
        gerundet = gerundet / 100;
        System.out.println(gerundet); 
        
        rechnung2 = grundpreis2 + gerundet;
        System.out.println(rechnung2); 
        
        

                
        
        
    
    }
 
    
}
```

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.


----------



## Saheeda (8. Nov 2014)

899,6114 ergeben gerundet doch 899,61?

Warum rechnest du immer mit den Zahlen selbst und nicht mit den Variablen?
Einige Rechenschritte kann ich außerdem nicht so ganz nachvollziehen. Warum teilst du rechnung1 zuerst durch 100 und multiplizierst es im nächsten Schritt wieder damit?

Steht in der Aufgabenstellung, dass du kein if benutzen darfst? Mir fiele jetzt auf Anhieb keine Alternative ein.


----------



## shygo (8. Nov 2014)

Ja 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.

1 kWh kostet 23,49 cent, da ich aber Euro,cent also 899,61 haben möchte dachte ich rechne den Centbetrag ohne Kommastellen und als Ganzes.  Ohne diese Rechnung kommt ein anderes Ergebnis raus als ich haben will.
Da ich ja die ganzen Cent haben will bzw nur die ersten 2 Stellen davon rechne ich dann / 100.

Hoffe du verstehst was ich meine


----------



## shygo (9. Nov 2014)

Ist den keiner da der mir helfen kann ? Muss diese Aufgabe bis 18 Uhr fertig haben und komme echt nicht weiter.


----------



## Saheeda (9. Nov 2014)

Zu den Nachkommastellen schau mal hier:
numberformat - How do I format a number in java? - Stack Overflow

Weißt du, wie der Bedingungsoperator funktioniert? Wenn ihr den benutzen dürft, siehts ungefähr so aus:


```
public static void main(String[] args) {
		
double a = 5;
double b = 2;

System.out.println((a > b) ? a : b);

}
```
Ausgabe ist hier: 5.0


----------



## shygo (9. Nov 2014)

Ok super, das mit der Ausgabe klappt schonmal. Leider hilft mir das mit den Nachkommastellen nicht weil dort auch wieder funktionen benutzt werden die wir noch nicht hatten.

Vllt mache ich irgentwo ein Fehler mit einem float oder int oder mit der Multiplikation.
Also jetzt muss ich nur noch die Kommastellen auf 2 Stellen kriegen.

Edit: Kriege gleich die Lösungen dann werde ich diese mit meinen vergleichen und dann feststellen wo ich was falsch gemacht habe oder was ich vergessen habe.

PS:


```
/**
 * Diese Klasse rechnet die Stromrechnung für zwei Tarife aus, vergleicht sie
 * und gibt den Preiswertesten aus.
 */
public class Stromrechnung {

    /**
     * Gibt den Preiswertesten Tarif auf dem Bildschirm aus.
     *
     * @param args  wird nicht verwendet
     */
    public static void main(String[] args) {

        double verbrauchpreis;
        double grundpreis;
        double kostenTarif1;
        double kostenTarif2;
        double ausgabe;
        
        //Ausrechnung des ersten Tarifs.
        
        grundpreis = 5.75;
        verbrauchpreis = 23.49;
        
        /* Verbauchspreis ausrechnen und das Komma um zwei stellen nach links
         * verschieben.
         */
        verbrauchpreis = verbrauchpreis * 3536 / 100;
        grundpreis = grundpreis * 12;
        kostenTarif1 = (verbrauchpreis + grundpreis);
        
        /*Hier wird gerundet und um die ungewollten Komastellen abzuschneiden
         *konvertieren wir die Variable von Double in Int.
         */
        
        kostenTarif1 =  (int) (100 * kostenTarif1 + 0.5);

        kostenTarif1 = kostenTarif1 / 100;
        

        
        
        //Ausrechnung des zweiten Tarifs.
        
        grundpreis = 9.85;
        verbrauchpreis =  22.10;
        
        /* Verbauchspreis ausrechnen und das Komma um zwei stellen nach links
         * verschieben.
         */
        verbrauchpreis = verbrauchpreis * 3536 / 100;

        grundpreis = grundpreis * 12; // Für das ein Jahr den Grundpreis.

        kostenTarif2 = (verbrauchpreis + grundpreis);
        
        /*Hier wird gerundet und um die ungewollten Komastellen abzuschneiden
         *konvertieren wir die Variable von Double in Int.
         */
        kostenTarif2 =  (int) (100 * kostenTarif2 + 0.5);
        kostenTarif2 = kostenTarif2 / 100;
        
        
        /* 
         * Erst werden die zwei Traife veglichen, und dadurch wird enschieden
         * ob der erste oder der zweite Werte ausgegeben wird.
        */
        
        ausgabe =   kostenTarif1 < kostenTarif2 ? kostenTarif1 : kostenTarif2;
        
        
        System.out.println(ausgabe);
        
        
        
    }
}
```


----------

