Taschenrechner in Java programmieren, Rechenzeichen
Wir haben heute in der Schule angefangen, Java zu lernen und solln als Hausaufgabe einen Taschenrechner programmieren. Einen einfachen Taschenrechner, der z.B. nur + rechnen kann ist kein Problem, aber ich will, dass ich sowohl 2 zahlen, als auch ein Rechenzeichen eingeben kann, geht bei mir aber leider nicht. Ich habs probiert mit "public int Ergebnis (int x, char y, int z); und dann "return x + y + z" da ich weiß, dass man zB in einer Textbox so einzelne Texte verbindet, aber bei return gilt es als Rechenzeichen. wie kann ich also Zahlen und REchenzeichen verbinden?
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.
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.
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;
}
}
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 ;)
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;
}
}
}
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"