# simpler Taschenrechner



## QuantumLP (15. Aug 2017)

Ich programmiere seit ein paar Tagen mit Java und wollte mal ein Taschenrechner programmieren. Der hat auch super geklappt aber jetzt wollte ich wissen wie ich es machen kann das der Taschenrechner auch Minus rechnet könnt ihr helfen?

Hier der Code: 

 public static void main(String[] args) {
        double zahl1, zahl2, ergebnis;
        Scanner scannerVariable = new Scanner(System.in);

        System.out.println("Erste Zahl bitte.");
        zahl1=scannerVariable.nextDouble();
        System.out.println("Zweite Zahl bitte.");
        zahl2=scannerVariable.nextDouble();
        ergebnis=zahl1+zahl2;
        System.out.println("Das Ergebnis ist: " + ergebnis);
    }

}


----------



## Robat (15. Aug 2017)

Um es einfach zu halten könntest du vorab eine Abfrage machen welche Rechenoperation der Benutzer haben will. So kannst du dann einfach bei der Berechnung zwischen -, +, *, / , .. differenzieren.


----------



## Meeresgott (15. Aug 2017)

Du musst irgendwo abfragen, ob plus oder Minus gerechnet werden soll.


----------



## Robat (15. Aug 2017)

@Meeresgott was hat er jetzt für einen Lerneffekt wenn er den fertigen Code hingeklatscht bekommt?


----------



## QuantumLP (15. Aug 2017)

@Robat Kannst du mir vielleicht eine bessere Erklärung geben? Ich weiss nähmlich nicht ganz wie man so was machen soll.


----------



## Meeresgott (15. Aug 2017)

Hmm da hast du recht  nicht nach gedacht 

Hoffentlich hat er es so schnell nicht kopiert


----------



## Robat (15. Aug 2017)

Die Erklärung ist hinfällig. Code steht ja schon oben


----------



## QuantumLP (15. Aug 2017)

Ok Danke für die Hilfe!


----------



## Meeresgott (15. Aug 2017)

Robat hat gesagt.:


> Die Erklärung ist hinfällig. Code steht ja schon oben



Habe es wieder raus genommen 

Ok.. er scheint es dennoch schon kopiert zu haben..


----------



## QuantumLP (15. Aug 2017)

@Meeresgott Hab es mir noch nicht angesehen  Kannst du mir aber vielleicht eine Erklärung geben?


----------



## Meeresgott (15. Aug 2017)

Schau dir mal if und else an. sowie die Methode equals bei Strings.


----------



## QuantumLP (15. Aug 2017)

bin immer noch zu dumm dafür


----------



## Meeresgott (15. Aug 2017)

Du fragst am Anfang den User, welche rechen Operation er haben möchte.
Und wertest das dann aus. Mit Scanner.nextLine(); bekommst du die Eingaben des Users als String


----------



## QuantumLP (15. Aug 2017)

Ok danke jetzt weiss ich wie es geht!


----------



## QuantumLP (15. Aug 2017)

@Meeresgott Doch noch nicht ganz... Dieses Scanner.nextLine(); Ich weiss nicht wo ich es benutzen soll.


----------



## Meeresgott (15. Aug 2017)

Das kannst du dir quasi aussuchen. Du kannst es direkt an den Anfang schreiben oder nachdem du die beiden Zahlen eingelesen hast. Ich würde es an den Anfang schreiben und davor ein System.out.println(), dass sowas wie "Welche Rechenoperation ist gewünscht?" oder einfach "+-*/?" auf jeden Fall sowas wie du schon mit gib eine Zahl ein gemacht hast.


----------



## QuantumLP (15. Aug 2017)

Dann krieg ich ne Fehlermeldung mit dem Scanner.nextLine();


----------



## Leon_2001 (15. Aug 2017)

Genauso wie du es auch schon selbst gemacht hast, nur eben anstatt dass du mit next Double einen Double speicherst in der Variable, kannst du mit nextLine() einen String speichern. Die Variable hat dann die Eingabe gespeichert und du kannst sie weiterverwenden.

Bei einer If abfrage kannst du dann eine Fallunterscheidung machen.

Falls Bedigung wahr
 Tue ...
Ansonsten 
 Tue ....

das heißt du brauchst eine Bedingung, die erfüllt oder nicht erfüllt wird z.B. Eben ein Vergleich.
Du hast ja schon oben den Hinweis bekommen, dass du Dir dazu die Methode equals() der Klasse String anschauen solltest.


----------



## Meeresgott (15. Aug 2017)

```
public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
       
        System.out.println("+-*/?");
        String s = scan.nextLine();
       
        System.out.println(s);
    }
```

Das klappt bei mir einwandfrei


----------



## QuantumLP (15. Aug 2017)

@Meeresgott Ich krieg jetzt aber unten bei ScannerVariable ne Fehlermeldung.


----------



## Meeresgott (15. Aug 2017)

Könntest du mir deinen Kompletten Code schicken? 
Welche Fehlermeldung? NullPointer oder eine Parse Exception?


----------



## QuantumLP (15. Aug 2017)

Jetzt funktioniert es aber ich krieg wenn ich eine Rechenart auswähle diese Fehlermeldung:
Exception in thread "main" java.lang.UnsupportedOperationException: Not supported yet.
    at taschenrechner.v.pkg0.pkg1.scannerVariable.nextDouble(scannerVariable.java:15)
    at taschenrechner.v.pkg0.pkg1.TaschenrechnerV01.main(TaschenrechnerV01.java:33)
C:\Users\Yanis\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 7 seconds)


----------



## QuantumLP (15. Aug 2017)

Hier noch den kompletten Code: 

    public static void main(String[] args) {
        double zahl1, zahl2, ergebnis;
            {
        Scanner scan = new Scanner(System.in);

        System.out.println("+-*/?");
        String s = scan.nextLine();

        System.out.println(s);
    }

                            System.out.println("Erste Zahl bitte.");
        zahl1=scannerVariable.nextDouble();
        System.out.println("Zweite Zahl bitte.");
        zahl2=scannerVariable.nextDouble();
        ergebnis=zahl1+zahl2;
        System.out.println("Das Ergebnis ist: " + ergebnis);
    }

}


----------



## Meeresgott (15. Aug 2017)

Mach mal die geschweiften Klammern weg vor dem Scanner scan = new Scanner();
und hinter System.out.println(s);

Und woher kommt die Variable 'scannerVariable'? Ist das eine Instance von Scanner?


----------



## QuantumLP (15. Aug 2017)

ne immer noch


----------



## Meeresgott (15. Aug 2017)

Meeresgott hat gesagt.:


> Und woher kommt die Variable 'scannerVariable'? Ist das eine Instance von Scanner?



Bei mir klappt folgender Code:


```
public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
       
        double zahl1, zahl2, ergebnis;
       
           

        System.out.println("+-*/?");
        String s = scan.nextLine();

        System.out.println(s);
       

        System.out.println("Erste Zahl bitte.");
        zahl1 = scan.nextDouble();
        System.out.println("Zweite Zahl bitte.");
        zahl2 = scan.nextDouble();
        ergebnis = zahl1 + zahl2;
        System.out.println("Das Ergebnis ist: " + ergebnis);
    }
```

Es MUSS (wie die Fehlermeldung schon sagt) an deinem Object 'scannerVariable' liegen. Auch mit Zwei Scannern funktioniert es bei mir. Ist 'scannerVariable' eine Instanz von einer Klasse die du geschrieben hast?


----------



## QuantumLP (16. Aug 2017)

@Meeresgott wie mach ich es jetzt das der Rechner weiss das er - rechnen muss?


----------



## Meeresgott (16. Aug 2017)

Versuch es mal hier mit


----------



## JStein52 (16. Aug 2017)

Das könnte man hier eher mit einem switch erledigen:

```
switch(s){
    case "+":
        ergebnis = zahl1 + zahl2;
        break;
    case "-":
        ergebnis = zahl1 - zahl2;
        break;
    case "*":
        ergebnis = zahl1* zahl2;
        break;
    case "/":
        ergebnis = zahl1 / zahl2;
        break;
    default:
         break;
  }
```


----------



## QuantumLP (16. Aug 2017)

@JStein52 Er rechnet dann aber immer noch +


----------



## JStein52 (16. Aug 2017)

zeig mal wie du das eingebaut hast


----------



## QuantumLP (16. Aug 2017)

@JStein52 So:

```
Scanner scan = new Scanner(System.in);
     
        double zahl1 = 0, zahl2 = 0, ergebnis;
     
         

        System.out.println("+-*/?");
        String s = scan.nextLine();

        System.out.println(s);

                System.out.println("Erste Zahl bitte.");
        zahl1 = scan.nextDouble();
        System.out.println("Zweite Zahl bitte.");
        zahl2 = scan.nextDouble();
        ergebnis = zahl1 + zahl2;
        System.out.println("Das Ergebnis ist: " + ergebnis);
     
        switch(s){
    case "+":
        ergebnis = zahl1 + zahl2;
        break;
    case "-":
        ergebnis = zahl1 - zahl2;
        break;
    case "*":
        ergebnis = zahl1* zahl2;
        break;
    case "/":
        ergebnis = zahl1 / zahl2;
        break;
    default:
         break;
  }
```


----------



## MarzAttak (16. Aug 2017)

Schon klar, schau dir mal den Programmablauf an:
du addierst die Zahlen, gibst das Ergebnis aus... und dann machst du die Switch-Anweisung, die entscheidet, was berechnet werden soll. Um es einfach zu machen: Schmeiß die 'Ergebnis=zahl1+zahl2' Zeile raus und setz genau da deine Switch-Konstruktion rein


----------



## QuantumLP (16. Aug 2017)

Ok jetzt funktioniert es! Danke für eure Hilfe!


----------



## VfL_Freak (16. Aug 2017)

too late, deswegen gelöscht !!

VG Klaus


----------

