• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Java Taschenrechner problem

Pänat

Newbie
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
 
A

Anonymous

Gast
1. Die Variable w mußt Du erst einmal einlesen.
2. Bei case muß + usw in einfache Hochkommata, sind char!

Peter
 
A

Anonymous

Gast
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
 
A

Anonymous

Gast
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);
}
}
 
A

Anonymous

Gast
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
 
OP
P

Pänat

Newbie
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);
}
}
 
A

Anonymous

Gast
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
 
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
 

derMani

Hacker
Das sollte helfen

Code:
	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); 
		
		
		
		
	}
 
Oben