# if Anweisung richtig schreiben



## WenzelPaul (10. Juni 2007)

Hallo,

Ich wollte hier versuchen eine Operation (+ - * / %) ausführen.
Wenn ich jetzt eine ausgewählt habe, führt er trotzdem die anderen aus und gibt sie aus.
Was mach ich denn falsch? Hat jemand eine Idee?


```
private void berechne() throws IOException
  {
    MeineAusgabe.schreibe("Bitte wählen Sie die Operation (+ - * / %):  ");
    inData1 = MeineEingabe.erfasseText();
    if (inData1.equals("+"))
    {
    	ergebnis = (zahl1 + zahl2);
    	MeineAusgabe.schreibe("\nErgebnis\n\n");
    	MeineAusgabe.schreibe(zahl1 + " + " + zahl2 + " = " + ergebnis);
    }
    else
    if (inData1.equals("-"));
    {
    	ergebnis = (zahl1 - zahl2);
    	MeineAusgabe.schreibe("\nErgebnis\n\n");
    	MeineAusgabe.schreibe(zahl1 + " - " + zahl2 + " = " + ergebnis);
    }
    
    if (inData1.equals("*"));
    {
    	ergebnis = (zahl1 * zahl2);
    	MeineAusgabe.schreibe("\nErgebnis\n\n");
    	MeineAusgabe.schreibe(zahl1 + " * " + zahl2 + " = " + ergebnis);
    }
    if (inData1.equals("/"))
    {
    	ergebnis = (zahl1 / zahl2);
    	MeineAusgabe.schreibe("\nErgebnis\n\n");
    	MeineAusgabe.schreibe(zahl1 + " / " + zahl2 + " = " + ergebnis);
    }
    if (inData1.equals("%"))
    {
    	ergebnis = (zahl1 % zahl2);
    	MeineAusgabe.schreibe("\nErgebnis\n\n");
    	MeineAusgabe.schreibe(zahl1 + " % " + zahl2 + " = " + ergebnis);
    }
  }
```
danke für die Hilfe!


----------



## deepthroat (10. Juni 2007)

Hi.

Nach einem if darf genau eine Anweisung stehen - das kann eine einzelne Anweisung sein, ein Anweisungsblock (in geschweiften Klammern) oder auch eine leere Anweisung (ein Semikolon).


			
				WenzelPaul hat gesagt.:
			
		

> ```
> if (inData1.equals("-"));
> { ... }
> ```


Hier steht hinter dem if eine leere Anweisung, der Anweisungsblock danach hat nichts mehr mit dem if zu tun und wird somit auch immer ausgeführt. Nimm einfach die Semikola da weg.

Gruß


----------



## WenzelPaul (10. Juni 2007)

ja coole Sache nun gehts!
so ganz klar ist es mir aber noch nicht

kann ich in die if anweisung hier auch eine funktion einbauen die mich nach jeder berechnung fragt "Neue Frage (J/N)" ?


----------



## frogbender (10. Juni 2007)

also unser lehrer hat das mit do while gemacht.. finde ich cool besser als if weil ich nichtmal weiß wie ich if asgen soll wenn id bedinung erfüllt ist . Das er wieder oben neu anfangen soll. Aber sorry ich weiß selbst nicht wie das mit do while so richtig funktioniert... wir brauchten das da nur abtippen.... aber auf jedenfall sieht der krobe aufbau so aus


do
{
deine ifbedinungen hier rein
}
while()
{
anweisung
}


hoffe damit lieg ich ein wenig richtig den noch bin ich da anfänger ^^


----------



## deepthroat (10. Juni 2007)

WenzelPaul hat gesagt.:


> ja coole Sache nun gehts!
> so ganz klar ist es mir aber noch nicht
> 
> kann ich in die if anweisung hier auch eine funktion einbauen die mich nach jeder berechnung fragt "Neue Frage (J/N)" ?


Dazu würde man eigentlich eine Schleife benutzen (wenn ich dich richtig verstanden habe):

```
private void berechne() throws IOException
  do {
    MeineAusgabe.schreibe("Bitte wählen Sie die Operation (+ - * / %):  ");
    inData1 = MeineEingabe.erfasseText();
  
    if (...) {
    } else if (...) {
      ...
    } else {
      /* keine gültige Eingabe */
    }
  } while (confirm("Neue Berechnung durchführen?")); 
}

private static boolean confirm (String question) throws IOException {
  System.out.print(question + " [jn] ");
    
  String line = (new BufferedReader(new InputStreamReader(System.in))).readLine();

  return line.equals("j");
}
```
Gruß


----------

