Java Taschenrechner (if-else)

Diskutiere Java Taschenrechner (if-else) im Java Basics - Anfänger-Themen Bereich.
M

Marek_2103

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

Zuletzt bearbeitet:
S

SchwarzWeiß

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

Du musst die Semikolons bei den else if entfernen.
 
M

Marek_2103

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

SchwarzWeiß

Sollte so funktionieren:
Java:
while(true){
//dein Code
}
 
S

SchwarzWeiß

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

SchwarzWeiß

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);
 
Robat

Robat

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

Sjin-Fugi

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;
        }
    }
 
VfL_Freak

VfL_Freak

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
 
Thema: 

Java Taschenrechner (if-else)

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben