Hallo,
das ist der Quellcode und unten die Frage:
import java. io.*;
public class Rechner
{
public static void main(String[] args )
throws IOException
{
int a, b, c;
byte w;
int s, t, u, v;
BufferedReader din = new BufferedReader(
new InputStreamReader (System.in));
System.out.println("Bitte geben sie die Rechenart ein:");
switch (w)
{
case s: +;
case t: -;
case u: *;
case v: /;
default:"Falsche Eingabe"
}
System.out.println("Bitte a eingeben: ");
a = Integer.parseInt(din.readLine());
System.out.println("Bitte b eingeben: ");
b = Integer.parseInt(din.readLine());
c = a w b;
System.out.println("Ergebnis"+c);
}
}
Wollte diesen Taschenrechner erst über eine Texteingabe ausführen, aber es geht nicht. Ich hab das nämlich nicht ganz verstanden mit dem +, -, * und / . Ich weis nicht wie ich es ändern muß, damit es funktioniert.
Bitte um Hilfe!
Danke
Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.
Java Taschenrechner problem
Moderator: Moderatoren
Also ich würde sowieso zuerst alles einlesen lassen, also a, b, das Rechnezeichen (müsste es nicht char, anstatt byte sein, wegen unicode? ), dann eine switch-anweisung und dann für
- z. B. a - b;
+ a + b;
usw also für jedes case Statement halt die Rechneregeln dementsprechend ändern. Nach den einzelnen cases musst du auch eine break; Anweisung stehen haben, da sonst einfach das nächste case statement ausgeführt wird.
mfg
Andy
- z. B. a - b;
+ a + b;
usw also für jedes case Statement halt die Rechneregeln dementsprechend ändern. Nach den einzelnen cases musst du auch eine break; Anweisung stehen haben, da sonst einfach das nächste case statement ausgeführt wird.
mfg
Andy
habs jetzt geändert, aber erzeigt immer noch an, dass + und die anderen Zeichen immer noch falsch sind (Invalid expression as statement). Hab die Veränderte Fassung noch einmal geschickt:
public class Rechner
{
public static void main(String[] args )
throws IOException
{
int a, b, c;
char w;
char s, t, u, v;
BufferedReader din = new BufferedReader(
new InputStreamReader (System.in));
System.out.println("Bitte geben sie die Rechenart ein:");
w = Char.parseInt(din.readLine());
switch (w)
{
case s: '+'; break;
case t: '-'; break;
case u: '*'; break;
case v: '/'; break;
default:"Falsche Eingabe"; break;
}
System.out.println("Bitte a eingeben: ");
a = Integer.parseInt(din.readLine());
System.out.println("Bitte b eingeben: ");
b = Integer.parseInt(din.readLine());
c = a w b;
System.out.println("Ergebnis"+c);
}
}
public class Rechner
{
public static void main(String[] args )
throws IOException
{
int a, b, c;
char w;
char s, t, u, v;
BufferedReader din = new BufferedReader(
new InputStreamReader (System.in));
System.out.println("Bitte geben sie die Rechenart ein:");
w = Char.parseInt(din.readLine());
switch (w)
{
case s: '+'; break;
case t: '-'; break;
case u: '*'; break;
case v: '/'; break;
default:"Falsche Eingabe"; break;
}
System.out.println("Bitte a eingeben: ");
a = Integer.parseInt(din.readLine());
System.out.println("Bitte b eingeben: ");
b = Integer.parseInt(din.readLine());
c = a w b;
System.out.println("Ergebnis"+c);
}
}
Versuch' es mal mit:
switch (w)
{
case '+': break;
case '-': break;
case '*': break;
case '/': break;
default:"Falsche Eingabe"; break;
}
Mit der Anweisung break verläßt das Programm die switch-Anweisung, ohne etwas zu tun. Abgesehen davon, daß ein ";" gereicht hätte, willst Du aber doch dann etwas damit anfangen.
Stell diesen switch-Block hinter Deine Eingabe von a und b und statt break schreibst Du "c = a + b" usw.
Danach gibst Du c einfach aus.
Peter
switch (w)
{
case '+': break;
case '-': break;
case '*': break;
case '/': break;
default:"Falsche Eingabe"; break;
}
Mit der Anweisung break verläßt das Programm die switch-Anweisung, ohne etwas zu tun. Abgesehen davon, daß ein ";" gereicht hätte, willst Du aber doch dann etwas damit anfangen.
Stell diesen switch-Block hinter Deine Eingabe von a und b und statt break schreibst Du "c = a + b" usw.
Danach gibst Du c einfach aus.
Peter
Hab ich so gäendert, das problem dabei ist aber, er hat ein Problem mit w als Char Ausgabe (s.u. :!: ) Außerdem geht es mit dem default Wert nicht.
public class Rechner
{
public static void main(String[] args )
throws IOException
{
int a, b, c;
char w;
char s, t, u, v;
BufferedReader din = new BufferedReader(
new InputStreamReader (System.in));
System.out.println("Bitte a eingeben: ");
a = Integer.parseInt(din.readLine());
System.out.println("Bitte b eingeben: ");
b = Integer.parseInt(din.readLine());
System.out.println("Bitte geben sie die Rechenart ein:");
:!: w = Char.parseInt(din.readLine()); :!:
switch (w)
{
case '+': c = a + b ;
case '-': c = a - b ;
case '*': c = a * b ; case '/': c = a / b ;
//default:"FalscheEingabe";break;
}
//c = a w b;
System.out.println("Ergebnis" + c);
}
}
public class Rechner
{
public static void main(String[] args )
throws IOException
{
int a, b, c;
char w;
char s, t, u, v;
BufferedReader din = new BufferedReader(
new InputStreamReader (System.in));
System.out.println("Bitte a eingeben: ");
a = Integer.parseInt(din.readLine());
System.out.println("Bitte b eingeben: ");
b = Integer.parseInt(din.readLine());
System.out.println("Bitte geben sie die Rechenart ein:");
:!: w = Char.parseInt(din.readLine()); :!:
switch (w)
{
case '+': c = a + b ;
case '-': c = a - b ;
case '*': c = a * b ; case '/': c = a / b ;
//default:"FalscheEingabe";break;
}
//c = a w b;
System.out.println("Ergebnis" + c);
}
}
ja, weils ja nicht Char.parseint gibt, warum sollte er einem Char einen Integer wert zuweisen wollen?
Da ich mich mit der Eingabe von der Console nicht auskenne, weiss ich aber nicht, ob es bei char dann Char.parsechar heisst, oder irgendwie anders.
Du könntest aber mal anstatt das einzulesen erst mal mit w='+'; usw testen, ob er überhaupt richtig rechnet und dir dann noch Gedanken übers Einlesen machen.
Außerdem musst du nach jeder case anweisung also z. B.
case '+':
c = a + b;
ein break machen, also
case '+':
c = a + b;
break;
denn der macht sonst einfach mit dem nächsten weiter und würde dir letztenendes bei jedem Ausdruk c = a /b machen und anschließend noch die default Meldung ausgeben
mfg
Andy
Da ich mich mit der Eingabe von der Console nicht auskenne, weiss ich aber nicht, ob es bei char dann Char.parsechar heisst, oder irgendwie anders.
Du könntest aber mal anstatt das einzulesen erst mal mit w='+'; usw testen, ob er überhaupt richtig rechnet und dir dann noch Gedanken übers Einlesen machen.
Außerdem musst du nach jeder case anweisung also z. B.
case '+':
c = a + b;
ein break machen, also
case '+':
c = a + b;
break;
denn der macht sonst einfach mit dem nächsten weiter und würde dir letztenendes bei jedem Ausdruk c = a /b machen und anschließend noch die default Meldung ausgeben

mfg
Andy
-
- Newbie
- Beiträge: 2
- Registriert: 21. Okt 2007, 12:38
Problem bei der Schleifenbeendung
Hallo Leute!
Hab mal eine Frage an euch und zwar bin ich Java neuliging und bin ab ausporbieren und lernen. Ich hab mich mal der Aufgabe gewidmet einen Taschenrechner zu erstellen. Nun möchte ich es so machen, dass er nach einer Rechenoperation fragt ob ich weiter rechnen will oder aufhören will. Der Taschenrechner ansich lläuft jetzt super, aber ich muss ja auch irgendwie die do/while Schleife beenden, dass die Aussage false ergibt. Weil jetzt wenn ich n eingebe fängt er wieder von oben an. Was meint ihr zu diesem problem hier mein Quelltext:
import java.util.Scanner;
import java.io.IOException;
public class Taschenrechner {
public static void main(String[] args) throws IOException
{
String d;
int a, b, c;
boolean n=false;
do {
Scanner scan = new Scanner(System.in);
System.out.println("Bitte geben sie die erste Zahl ein: ");
a = scan.nextInt();
System.out.println("Bitte geben sie die zweite Zahl ein: ");
b = scan.nextInt();
c = a - b;
System.out.println("a-b=" + c);
c = a * b;
System.out.println("a*b=" + c);
c = a / b;
System.out.println("a/b=" + c);
c = a + b;
System.out.println("a+b=" + c);
System.out.println("Wollen sie weiterrechnen? (j/n)");
d = scan.next();
} while (n != true);
}
}
mfg
Lukas
Hab mal eine Frage an euch und zwar bin ich Java neuliging und bin ab ausporbieren und lernen. Ich hab mich mal der Aufgabe gewidmet einen Taschenrechner zu erstellen. Nun möchte ich es so machen, dass er nach einer Rechenoperation fragt ob ich weiter rechnen will oder aufhören will. Der Taschenrechner ansich lläuft jetzt super, aber ich muss ja auch irgendwie die do/while Schleife beenden, dass die Aussage false ergibt. Weil jetzt wenn ich n eingebe fängt er wieder von oben an. Was meint ihr zu diesem problem hier mein Quelltext:
import java.util.Scanner;
import java.io.IOException;
public class Taschenrechner {
public static void main(String[] args) throws IOException
{
String d;
int a, b, c;
boolean n=false;
do {
Scanner scan = new Scanner(System.in);
System.out.println("Bitte geben sie die erste Zahl ein: ");
a = scan.nextInt();
System.out.println("Bitte geben sie die zweite Zahl ein: ");
b = scan.nextInt();
c = a - b;
System.out.println("a-b=" + c);
c = a * b;
System.out.println("a*b=" + c);
c = a / b;
System.out.println("a/b=" + c);
c = a + b;
System.out.println("a+b=" + c);
System.out.println("Wollen sie weiterrechnen? (j/n)");
d = scan.next();
} while (n != true);
}
}
mfg
Lukas
Das sollte helfen
Code: Alles auswählen
public static void main(String[] args) throws IOException
{
String d;
int a, b, c;
boolean n=false;
do
{
Scanner scan = new Scanner(System.in);
System.out.println("Bitte geben sie die erste Zahl ein: ");
a = scan.nextInt();
System.out.println("Bitte geben sie die zweite Zahl ein: ");
b = scan.nextInt();
c = a - b;
System.out.println("a-b=" + c);
c = a * b;
System.out.println("a*b=" + c);
c = a / b;
System.out.println("a/b=" + c);
c = a + b;
System.out.println("a+b=" + c);
System.out.println("Wollen sie weiterrechnen? (j/n)");
d = scan.next();
if (d.equals("n"))
{
n = true;
}
} while (n != true);
}
Andrew S. Tanenbaum: The nice thing about
standards is that you have so many to choose from.
Furthermore, if you dont’t like any of them, you can
just wait for next year’s model.
Linux-Club Wiki
Howtos, Tipps uvm.
http://wiki.linux-club.de/
standards is that you have so many to choose from.
Furthermore, if you dont’t like any of them, you can
just wait for next year’s model.
Linux-Club Wiki
Howtos, Tipps uvm.
http://wiki.linux-club.de/
-
- Newbie
- Beiträge: 2
- Registriert: 21. Okt 2007, 12:38