Taschenrechner mit SwitchCase programmieren?

4 Antworten

  1. Wäre es gut, wenn wir deinen bisherigen Code sehen dürften :)
  2. Dein operator passt ja in einen CHAR, und diesen kannst du dann in dein Switch-Case einprogrammieren
switch (operator){
    case '+':

    break;

    case '-':

    break;
}

etc.

MFG xGlumi

Woher ich das weiß:eigene Erfahrung – Programmier/IT Erfahrung seit 2009 (Freizeit und Beruf)

Mustachey 
Fragesteller
 28.10.2018, 14:36

int ergebnis = 0;

int var = 0;

switch (var) {

case 0: 

ergebnis = zahl + zahl2; break;

case 1:

ergebnis = zahl - zahl2; break;

case 2:

ergebnis = zahl * zahl2; break;

case 3:

ergebnis = zahl / zahl2; break;

case 4:

ergebnis = zahl % zahl2; break;

default:

System.out.println("Das war kein Operator.");

}

  

}

das ist mein bisheriger code

0
xGlumi  28.10.2018, 14:40
@Mustachey

Öhm, so ist es natürlich auch möglch (Wenn ich deinen Code richtig lese, und du je nach gedrücktem Operator deiner Variable "var" eine entsprechende Zahl gibst.

Frage:
Weshalb hast du es nicht per CHAR gelöst?

Beispiel:

int ergebnis = 0; //Hier könntest du übrigens schon deine bisherige Zahl (Zwischenergebnis) reinspeichern

char operator = '\0';
operator = (char) System.in.read();

switch (operator){
    case '+':
        ergebnis += zahl2;
    break;

    case '-':
        ergebnis -= zahl2;
    break;

    case '*':
        ergebnis *= zahl2;
    break;

    case '/':
        ergebnis /= zahl2;
    break;
    
    default:
        System.out.Println("Das war kein Operator");
    break;
}

Natürlich kenne ich deinen Code davor und danach nicht, wie du z.B. die Zahlen / Operator einliest. (Hast du eine GUI? machst du das per CLI?)

Aber so würde ich es zum Anfang machen

MFG xGlumi

0
Mustachey 
Fragesteller
 28.10.2018, 14:44
@xGlumi

Der ganze Code ist wie folgt:

public class Taschenrechner {

public static void main(String[]args){

System.out.println("Willkommen im Taschenrechner!");

int zahl = IOTools.readInteger();

System.out.println("Geben Sie bitte eine Zahl ein:" + zahl);

int zahl2 = IOTools.readInteger();

System.out.println("Geben Sie bitte eine weitere Zahl ein:" + zahl2);

char operator = IOTools.readChar();

System.out.println("Geben Sie bitte einen Operatoren ein:" + operator);

int ergebnis = 0;

und weiter komme ich halt nicht.. deine Möglichkeit habe ich ausprobiert, sie hat leider nicht geklappt..

lg

0
xGlumi  28.10.2018, 14:54
@Mustachey

Also bei mir funktioniert folgender Code:

import java.util.Scanner;    
public static void main(String args[]) {
        Scanner reader = new Scanner(System.in);
        System.out.println("Willkommen im Taschenrechner!");
        int zahl = reader.nextInt();
    
        System.out.println("Geben Sie bitte eine Zahl ein:" + zahl);
        int zahl2 = reader.nextInt();
    
        System.out.println("Geben Sie bitte eine weitere Zahl ein:" + zahl2);
        char operator = reader.next().charAt(0);
    
        System.out.println("Geben Sie bitte einen Operatoren ein:" + operator);
        int ergebnis = 0;
        
        switch (operator){
            case '+':
                ergebnis = zahl + zahl2;
            break;
        
            case '-':
                ergebnis = zahl - zahl2;
            break;
        
            case '*':
                ergebnis = zahl * zahl2;
            break;
        
            case '/':
                ergebnis = zahl / zahl2;
            break;
            
            default:
                System.out.println("Das war kein Operator");
            break;
        }
        
        System.out.println("Ergebnis: " + ergebnis);
    }

Das einlesen der Daten kannst du wieder auf dein "IOTools" ummünzen, ich kenne "IOTools" nicht, deshalb habe ich mir mit der normalen Scanner-Klasse beholfen.

MFG xGlumi

0
Mustachey 
Fragesteller
 28.10.2018, 15:06
@xGlumi

Gut! Danke hat geklappt, doch wenn ich jetzt bei der Eingabe in der Konsole 5, 5 und danach z.B. G eingebe, dann steht da zwar das war kein operator: G aber als ergebnis steht 5g5=0. wie kriege ich es hin, dass dort nur die fehlermeldung steht?

0
xGlumi  28.10.2018, 15:10
@Mustachey

Nach dem

System.out.println("Das war kein Operator");

ein

return;

einfügen

MFG xGlumi

1

Was ist Operator für ein Datentyp? String?

Schau dir an wie man Switch verwendet und mit welchen Datentypen das wie funktioniert ;)

Woher ich das weiß:Studium / Ausbildung – Informatikstudium

Mustachey 
Fragesteller
 28.10.2018, 14:33

Ja, string.

0

So:

char operator = IOToolkit.getChar();

switch (operator) {
  // ...

Die Variable operator ist doch die, die du überprüfen möchtest. So, wie du es auch bei if-else tust.


regex9  28.10.2018, 14:39

Korrektur: Die Methode heißt readChar.

0
String op = "+";
switch (op) {
  case "+": // ...
}

oder

char op = '+';
switch (op) {
  case '+': // ...
}
Woher ich das weiß:Berufserfahrung