Java Taschenrechner (if-else)

Marek_2103

Mitglied
Hallo liebe Leute,

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

Code:
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?
 

Anhänge

  • Calculator.PNG
    Calculator.PNG
    8,9 KB · Aufrufe: 131
Zuletzt bearbeitet:
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?
 
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))
 
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);
 
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.

Java:
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");
}
 
Hier ist noch eine Lösung mit Switch Case
Java:
    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;
        }
    }
 
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
 

Neue Themen


Zurück
Oben