Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Java Taschenrechner problem

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
Pänat
Newbie
Newbie
Beiträge: 19
Registriert: 15. Apr 2004, 13:33
Wohnort: Steinhorst

Java Taschenrechner problem

Beitrag von Pänat »

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
peedee

Beitrag von peedee »

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

Peter
genius667

Beitrag von genius667 »

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
Gast

Beitrag von 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);
}
}
peedee

Beitrag von peedee »

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
Pänat
Newbie
Newbie
Beiträge: 19
Registriert: 15. Apr 2004, 13:33
Wohnort: Steinhorst

Beitrag von Pänat »

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);
}
}
genius667

Beitrag von genius667 »

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
luk340045117
Newbie
Newbie
Beiträge: 2
Registriert: 21. Okt 2007, 12:38

Problem bei der Schleifenbeendung

Beitrag von luk340045117 »

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
Hacker
Beiträge: 661
Registriert: 7. Jun 2004, 22:23
Wohnort: Papenburg
Kontaktdaten:

Beitrag von derMani »

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/
luk340045117
Newbie
Newbie
Beiträge: 2
Registriert: 21. Okt 2007, 12:38

Beitrag von luk340045117 »

Hallo vielen Dank für deine Mühe hat geklappt :D
MfG
Lukas
Antworten