# Java Taschenrechner (if-else)



## Marek_2103 (5. Dez 2017)

Hallo liebe Leute,

wir haben in der Schule mit dem Thema if-else angefangen. Sollen dazu einen Taschenrechner bauen.
Hier ist meine Idee:


```
public class Calculator {

    public static void main(String[] args)
    {
     

        int ergebnis;
     
        System.out.println("Wollen Sie Addition, Subtraktion , Multiplikation oder Division?");
        String bestätigung = new java.util.Scanner( System.in ).next();
     
        if (bestätigung.equals("Addition"))
        {
    System.out.println("Bitte geben Sie zwei Zahlen ein:");
    int zahl1 = new java.util.Scanner(System.in).nextInt();
    int zahl2 = new java.util.Scanner(System.in).nextInt();
    ergebnis = zahl1 + zahl2;
    System.out.println("Das Ergebnis lautet: "   + ergebnis );
        }
       else if (bestätigung.equals("Subtraktion"));
       {
   System.out.println("Bitte geben Sie zwei Zahlen ein:");     
   int zahl1 = new java.util.Scanner (System.in).nextInt();
   int zahl2 = new java.util.Scanner (System.in).nextInt();
   ergebnis = zahl1 - zahl2;
   System.out.println("Das Ergebnis lautet: " + ergebnis);
       }
       else if (bestätigung.equals("Multiplikation"));
       {
   System.out.println("Bitte geben Sie zwei Zahlen ein:");     
   int zahl1 = new java.util.Scanner (System.in).nextInt();
   int zahl2 = new java.util.Scanner (System.in).nextInt();
   ergebnis = zahl1 * zahl2;
   System.out.println("Das Ergebnis lautet: " + ergebnis);
       }
      else if(bestätigung.equals("Division"));
       {
   System.out.println("Bitte geben Sie zwei Zahlen ein:");     
   int zahl1 = new java.util.Scanner (System.in).nextInt();
   int zahl2 = new java.util.Scanner (System.in).nextInt();
   ergebnis = zahl1 / zahl2;
   System.out.println("Das Ergebnis lautet: " + ergebnis);
       }
   }
}
```


Ich möchte eine Abfrage starten. Wenn ich Division eingebe, soll nur dividiert werden und es soll mir ein Ergebnis anzeigt werden. Ebenfalls bei Multiplikation und Subtraktion.
Bei der Addition funktioniert es.
Bei den anderen drei wird immer weiter gerechnet. Ich sehe meinen Fehler leider nicht. Kann mir jemand helfen?
Ebenfalls möchte ich eine Funktion einbauen, dass ich immer wieder am Anfang des Programmes lande. Also es nicht immer wieder neustarten muss.
Hat jemand eine Idee?


----------



## SchwarzWeiß (5. Dez 2017)

Code bitte in Code-Tags (Symbolleiste -> Einfügen -> Code -> Java)

Du musst die Semikolons bei den else if entfernen.


----------



## Marek_2103 (5. Dez 2017)

Oh, das hab ich total übersehen. Danke
Hast du vielleicht eine Idee wie man eine endlos Schleife einbaut, damit ich nicht immer wieder das Programm neustarten muss um zu rechnen?


----------



## SchwarzWeiß (5. Dez 2017)

Sollte so funktionieren:

```
while(true){
//dein Code
}
```


----------



## SchwarzWeiß (5. Dez 2017)

Wenn du willst, dass der Benutzer das Programm beenden kann, kannst du einen weiteren else if - Block erstellen, der z.B. auf das Wort "Abbruch" reagiert und dann das Programm beendet (System.exit(0))


----------



## Marek_2103 (5. Dez 2017)

Super, funktionert. Danke


----------



## Marek_2103 (5. Dez 2017)

Wie funktioniert das denn mit dem (System.exit(0))?


----------



## SchwarzWeiß (5. Dez 2017)

So wie du für Addition, Subtraktion etc. einen else if-Block erstellt hast, machst du jetzt einen, der die Eingabe mit "Abbruch" vergleicht und innerhalb dieses else-if-Blocks schreibst du einfach nur System.exit(0);


----------



## VfL_Freak (5. Dez 2017)

Moin,


Marek_2103 hat gesagt.:


> Wie funktioniert das denn mit dem (System.exit(0))?


oops, Google mal wieder kaputt ?? 
https://stackoverflow.com/questions...stem-exit0-system-exit-1-system-exit1-in-java
https://stackoverflow.com/questions/3715967/when-should-we-call-system-exit-in-java
https://stackoverflow.com/questions/457338/use-of-system-exit0

VG Klaus


----------



## Robat (5. Dez 2017)

`while(true)` würde ich nicht nutzen - ist bad practise. 
Mach dir doch lieber eine boolsche Variable die du umschaltest sobald der Nutzer bspw "Abbruch" eingibt.
Dann musst du dein Programm auch nicht mit `System.exit(0)` beenden.


```
public static void main(String[] args) {

    boolean isRunning = true;
    String input = "";

    while (isRunning) {
        // do some stuff
        if (input.equals("Abbruch")  {
            isRunning = false;
        }
    }
    System.out.println("Bye bye");
}
```


----------



## Sjin-Fugi (14. Feb 2020)

Hier ist noch eine Lösung mit Switch Case

```
public static void main(String[] args) {

        double zahl1, zahl2;
        double ergebnis;

        System.out.println("Wollen Sie Addition, Subtraktion , Multiplikation oder Division?");

        String bestätigung = new java.util.Scanner(System.in).next();

        switch (bestätigung) {
            case "Addition":
                System.out.println("Bitte geben Sie zwei Zahlen ein:");
                zahl1 = new java.util.Scanner(System.in).nextDouble();
                zahl2 = new java.util.Scanner(System.in).nextDouble();
                ergebnis = zahl1 + zahl2;
                System.out.println("Das Ergebnis lautet: " + ergebnis);
                break;
            case "Subtraktion":
                System.out.println("Bitte geben Sie zwei Zahlen ein:");
                zahl1 = new java.util.Scanner(System.in).nextDouble();
                zahl2 = new java.util.Scanner(System.in).nextDouble();
                ergebnis = zahl1 - zahl2;
                System.out.println("Das Ergebnis lautet: " + ergebnis);
            case "Multiplikation":
                System.out.println("Bitte geben Sie zwei Zahlen ein:");
                zahl1 = new java.util.Scanner(System.in).nextDouble();
                zahl2 = new java.util.Scanner(System.in).nextDouble();
                ergebnis = zahl1 * zahl2;
                System.out.println("Das Ergebnis lautet: " + ergebnis);
                break;
            case "Division":
                System.out.println("Bitte geben Sie zwei Zahlen ein:");
                zahl1 = new java.util.Scanner(System.in).nextDouble();
                zahl2 = new java.util.Scanner(System.in).nextDouble();
                ergebnis = zahl1 / zahl2;
                System.out.println("Das Ergebnis lautet: " + ergebnis);
                break;
        }
    }
```


----------



## VfL_Freak (17. Feb 2020)

Moin,

zuviel doppelter/unnützer Code!
Die jeweiligen drei ersten Zeit eines jeden cases solltest Du besser VOR den Switch ziehen !!
Und das SysOut dahinter!

VG Klaus


----------

