Taschenrechner in Java programmieren, Rechenzeichen

4 Antworten

Mach doch drei Eingabefelder. Zwei für die Operatoren, eins für den Operanden.

Mit einem einzigen Texteingabefeld kommst Du nicht um einen Parser herum.

Jann96 
Fragesteller
 11.10.2012, 20:03

Schonmal Danke für deine Antwort, aber wie gesagt, ich prbier java heute zum ersten mal aus. :D Also wie mach ich 3 Eingabefelder? Ich benutze übrigens BlueJ, fals das wichtig ist.

0

Die Lösung von WhiteRussian ist schon die beste und einfachste Lösung! Das Problem ist, dass du mit if( y == '+') einen String ('+') mit einem Char (y) versuchst zu vergleichen. Dies erzeugt den illegal start of expression Fehler. Ändere Einfach den Kopf der Funktion in

    public int Ergebnis ( int x, String y, int z) {

und die If-Abfrage von WhiteRussian sollte funktionieren. Verwende also den folgenden kode:

public int Ergebnis ( int x, Sting y, int z){
    if( y == '+')
        return x+z;
    if( y == '-')
        return x-z;
    if( y == '*')
        return x*z;
    if( y == '/')
        return x/z;
    else
        return x+z;
}

Du solltest auch noch darüber nachdenken, den Rückgabewert der Funktion in float zu ändern, weil du sonst bei einer Rechnung wie z.B. 7 / 3 eine Fehlermeldung bekommst.

Ich hoffe, ich konnte helfen.

~ MyMarvel

Ich würde das mit einer if-Abfrage bzw. switch-Verzweigung machen:

public int Ergebnis ( int x, char y, int z){
    if( y == '+')
        return x+z;
    if( y == '-')
        return x-z;
    if( y == '*')
        return x*z;
    if( y == '/')
        return x/z;
    else
        return x+z;
}

Mit switch würde es so aussehen:

public int Ergebnis ( int x, char y, int z){
    switch(y){
       case '+':  return x+z; break;
       case '-':  return x-z; break;
       case '*':  return x*z; break;
       case '/':  return x/z; break;
       default:   return x+z; break;
    }    
}
Jann96 
Fragesteller
 11.10.2012, 21:56

Danke, ich versteh jetzt, dass es mit if funktioniert, aber leider gehn diese beiden codes nicht, den ersten kann ich zwar übersetzten, aber dann kommt "illegal start of expression"

0
dasAsdf  11.10.2012, 23:51
@Jann96

beim 2. Code musst du

die "breaks" rausnehmen, das "break" übernimmt die return anweisung nämlich schon.

Ich würd dir allerdings die erste Variante empfehlen, da ich mal davon ausgehe dass ihr "switch-case" noch gar nicht gemacht habt.

der Fehler "illegal start of expression" kommt wahrscheinlich dadurch, dass du bei der Eingabe die 'Strichel' (sry mir fällt das richige wort nicht ein :D) vergessen hast.

also nicht + sondern '+' dann sollte es klappen ;)

0

Probiere es mal damit: (Für Eclipse)

import java.util.Scanner;


public class Class_1 {

public static void main (String [] args){

System.out.println("Geben sie die erste Zahl ein");

Scanner zahl1_1 = new Scanner(System.in);
double zahl1 = zahl1_1.nextDouble();
System.out.println ("Zahl 1 = " + zahl1);

System.out.println("");
System.out.println("Geben sie die Zweite Zahl ein");

Scanner zahl2_2 = new Scanner(System.in);
double zahl2 = zahl2_2.nextDouble();
System.out.println("Zahl 2 = " + zahl2);

double erg1 = zahl1 + zahl2;
double erg2 = zahl1 - zahl2;
double erg3 = zahl1 * zahl2;
double erg4 = zahl1 / zahl2;

System.out.println("");
System.out.println("Addiren? = 1 ");
System.out.println("Subtrairen? = 2 ");
System.out.println("Multipliziren? = 3 ");
System.out.println("Dividiren? = 4 ");

Scanner zahl3_3 = new Scanner(System.in);
int zahl3= zahl3_3.nextInt();
switch (zahl3)
{
case 1: System.out.println(zahl1 + " + " + zahl2 + "=" + erg1);break;
case 2: System.out.println(zahl1 + " - " + zahl2 + "=" + erg2);break;
case 3: System.out.println(zahl1 + " * " + zahl2 + "=" + erg3);break;
case 4: System.out.println(zahl1 + " / " + zahl2 + "=" + erg4);break;
default: System.out.println("Follow me on Youtube: youtube.com/xoor");break;

}

}
}