Getränkeautomat und Rechenart

Seppeli95

Mitglied
Hallo liebes Forum,
ich programiere zur Zeit einen Getränkeautomaten.

So alles gut, mir gefällt er auch nur es gibt ein Problem solang der Betrag genau stimmt - den ich einwerfe - bekomme ich die Cola ausgegeben, jedoch wenn der Betrag höher ist als der Preis bekomme ich die Meldung zu wenig Geld eingeworfen: -x,xx euro fehlen noch. Die 2 Fache Überprüfung bei der If-Anweisung ist gewollt, da der Automat einen darauf hinweißen soll, dass wenn man zuwenig einwirft der fehlende Betrag angegeben wird

Wo liegt das Problem ?

Danke schonmal.

Hier der Codeausschnitt

Java:
    public void FlascheGeben()
    {
        if(bisherGezahlt==preis && bisherGezahlt>=preis)
            {
                // Die Ausgabe einer Flasche simulieren.
                System.out.println("####################");
                System.out.println("## Eine Cola");
                System.out.println("## kommt für");
                System.out.println("## " + preis + " Euro.");
                System.out.println("####################");
                System.out.println();

                
                
                     if(bisherGezahlt>=preis)
                        {
                            System.out.println("##################");
                            System.out.println("# Ihr Rückgeld:");
                            System.out.println("# " + (bisherGezahlt - preis) + " Euro.");
                            System.out.println("##################");
                            System.out.println();
                        }
                        
                        
                // Die Gesamtsumme mit dem eingezahlten Betrag aktualisieren.
                gesamtsumme += bisherGezahlt;
                // Die bisherige Bezahlung zurücksetzen.
                bisherGezahlt = 0;
            }
            else
            {
                //Restbetrag wird ausgerechnet
                restBetrag = preis - bisherGezahlt;
                //Restbetrag wird aufgerundet (wegen Double)
                restBetrag = Math.round( restBetrag * 100. ) / 100.;
                //Restbetrag wird ausgegeben, der noch zu zahlen ist
                System.out.println("####################");
                System.out.println("## Zu wenig Geld");
                System.out.println("## eingeworfen!");
                System.out.println("## Noch zu zahlen:"); 
                System.out.println("## " + (restBetrag) + " Euro.");
                System.out.println("####################");
                System.out.println();
            }
    }
 

Camill

Bekanntes Mitglied
[JAVA=3]if(bisherGezahlt==preis && bisherGezahlt>=preis)[/code]

Da dürfte der Fehler sein, diese Abfrage ist nur erfüllt wenn die Bedingung
Code:
bisherGezahlt==preis
zu trifft.
 

Kevka95

Mitglied
Aber doch auch (&&) wenn der eingegebene Betrag größer gleich der Preis ist oder täusche ich mich ?


Ja klar. Aber du must hier das UND beachten.

Die Abfrage ist nur war wenn der Betrag gleich dem Preis UND gleichzeitig größer ist. Und eine Zahl kann ja nicht gleichzeitig gleich groß und größer wie eine andere sein :)

Mache daraus doch einfach nur:

Java:
if(bisherGezahlt>=preis)
 

Camill

Bekanntes Mitglied
Bsp.:
1. Fall:
Java:
bisherGezahlt = 50; preis = 50;
bisherGezahlt == preis // true
bisherGezahlt >= preis // true
                     -> true

2. Fall:
Java:
bisherGezahlt = 60; preis = 50;
bisherGezahlt == preis // false
bisherGezahlt >= preis // true
                     -> false

Bei Benutzung von
Code:
&&
müssen immer beide Bedingungen erfüllt sein, im 2.Fall ist dies nicht der Fall.
Folgendes wäre aber richtig:
Java:
if(bisherGezahlt==preis || bisherGezahlt>=preis)
 

Fab1

Top Contributor
Ansonsten könntest du es natürlich auch mit (||) ODER verbinden. Allerdings wie Kevka schon gesagt hat, macht es keinen Sinn.

Oder Camill gerade noch erklärt hat, wie ich noch gesehen habe.
 

Neue Themen


Oben