# if Bedingungen verknüpfen



## Jänö (18. Okt 2012)

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.


```
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.");
    }
}
```


----------



## tfa (18. Okt 2012)

```
if ( (abhebbetrag <= (konto + kredit)) && dispo)
```


----------



## Jänö (18. Okt 2012)

und wenn ich eine Bedingung machen möchte, die nur zutrifft, wenn dispo = false?


----------



## Sadret (18. Okt 2012)

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:


```
if(dispo){
//dispo ist true
}else{
//dispo ist false
}
```


----------



## Jänö (18. Okt 2012)

cool Danke.  Sehr gut erklärt.


----------



## s4ke (19. Okt 2012)

Sadret hat gesagt.:


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



ACHTUNG: dispo == true ist imho falscher Stil und kann in manchen anderen Programmiersprachen Bugs produzieren. Also bitte dispo oder !dispo benutzen!


----------



## Paddelpirat (19. Okt 2012)

s4ke hat gesagt.:


> ACHTUNG: dispo == true ist imho falscher Stil und kann in manchen anderen Programmiersprachen Bugs produzieren.



In welcher Programmiersprache produziert das denn Bugs? Beim schlechten Stil stimm ich dir aber zu.


----------



## AngryDeveloper (19. Okt 2012)

Paddelpirat hat gesagt.:


> In welcher Programmiersprache produziert das denn Bugs?


Vielleicht in PHP?


----------



## s4ke (19. Okt 2012)

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.


----------

