if Bedingungen verknüpfen

Jänö

Mitglied
Wir sollen als Hausaufgabe einen Art Bankautomaten programmieren.
Dabei soll man Befehle ausführen können wie Einzahlen, Auszahlen und Kontoinformationen.
Wenn der abgehobene Betrag größer ist als das Guthaben auf dem Konto, soll dass Konto überzogen werden und auch nur so weit wie man kredit bekommt. Ich wollte diese beiden Bedingungen mit && verbinden, bin aber gescheitert.
(Ich benutze übrigens BlueJ, da ist alles ein wenig anders. Ich weiß es ist nicht das beste, aber das benutzen wir in der Schule...)
Der Fehler liegt in Zeile 17.

Java:
public class Bankautomat
{
   public double konto;
   public boolean dispo;
   public double kredit;
   public String besitzer;   

   public Bankautomat()
    {
       konto = 5;
       dispo = false;
       kredit = 1000;
       besitzer = "Hantoine";
    }
    public void Abheben(double abhebbetrag)
    {
        if (abhebbetrag <= (konto + kredit)) && if (dispo = true)
        System.out.print("Sie haben " + abhebbetrag + " € abgehoben. Ihr aktueller Kontostand beträgt " + (konto - abhebbetrag) + "€.");
        else
        System.out.print("Sie können maximal " + (konto + kredit) + " € abheben.");
    }
   public void Einzahlen(double einzahlbetrag)
    {
        System.out.print("Sie haben " + einzahlbetrag + " € eingezahlt. Ihr aktueller Kontostand beträgt " + (konto + einzahlbetrag) + "€.");
    }
   public void Info()
    {
        if (dispo = true)
        System.out.print("Hallo " + besitzer + ". Ihr aktueller Kontostand beträgt " + konto + " €. Sie dürfen ihr Konto um maximal " + kredit + " € überziehen.");
        else 
        System.out.print("Hallo" + besitzer + ". Ihr aktueller Kontostand beträgt " + konto + " €. Sie dürfen ihr Konto nicht überziehen.");
    }
}
 
Erstens darfst du auf keinen Fall if(dispo = true) schreiben, denn das ist eine Zuweisung, das heißt, dispo wird auf true gesetzt und die if-Bedingung wird dadurch auch immer true.

Richtige Syntax ist if(dispo == true) oder einfach if(dispo).

Für den Fall dispo = false kannst du entweder eine neue Schleife anfangen if(dispo == false) oder if(!dispo) oder einfach die bestehende Schleife erweitern:

Java:
if(dispo){
//dispo ist true
}else{
//dispo ist false
}
 
Erstens darfst du auf keinen Fall if(dispo = true) schreiben, denn das ist eine Zuweisung, das heißt, dispo wird auf true gesetzt und die if-Bedingung wird dadurch auch immer true.

Richtige Syntax ist if(dispo == true) oder einfach if(dispo).

Für den Fall dispo = false kannst du entweder eine neue Schleife anfangen if(dispo == false) oder if(!dispo) oder einfach die bestehende Schleife erweitern:

Java:
if(dispo){
//dispo ist true
}else{
//dispo ist false
}

ACHTUNG: dispo == true ist imho falscher Stil und kann in manchen anderen Programmiersprachen Bugs produzieren. Also bitte dispo oder !dispo benutzen!
 
Ich würde jetzt lügen, wenn ich eine Programmiersprache nenne, aber fakt ist, dass es dann wirklich davon abhängt, wie booleans interpretiert werden. Entweder es war bei == true Checks oder == false Checks.
 

Zurück
Oben