Erste Schritte Taschenrechner mit Schleife

rp1

Mitglied
Hallo,

ich bin gerade dabei einen Taschenrechner mit eclipse zu programmieren. Das ausrechnen funktioniert auch, allerdings soll der Taschenrechner nachdem er gerechnet hat nicht aufhören sondern erneut Zahlen und Rechenoperator abfragen und immer damit weiter machen bis man z.B. q (quit) eingibt.
Außerdem soll der Rechner bei einem ungültigen Operator eine Fehlermeldung anzeigen und erneut den Operator abfragen.

Bis jetzt sieht mein Programm so aus:

Java:
//Rechenoperatoren: Addition (+) = a
//					Subtraktion (-) = s
//					Multiplikation (*) = m
//					Division (/) = d

public class Rechner {

	public static void main(String[] args) {

                while (operator != q) {
			
		double x = IO.readDouble("1. Zahl: ");
		double y = IO.readDouble("2. Zahl: ");
		
		double addition = x + y;
		double subtraktion = x - y;
		double multiplikation = x * y;
		double division = x / y;
		
		char operator = IO.readChar("Rechenoperator: ");
			switch (operator) {
			
			case 'a': System.out.println("Ergebnis: " + addition); break;
			
			case 's': System.out.println("Ergebnis: " + subtraktion); break;
			
			case 'm': System.out.println("Ergebnis: " + multiplikation); break;
			
			case 'd': System.out.println("Ergebnis: " + division); break;
			
			case 'q': System.out.println("Ende!"); break;
			
			default: System.out.println("Ungültiger Operator.");
			
			}
			
                  }
	}
}

Ohne die while-Schleife funktioniert das ganze, sobald ich aber die Schleife drin hab zeigt mir eclipse folgende Fehlermeldung:

Exception in thread "main" java.lang.Error: Unresolved compilation problems:
operator cannot be resolved to a variable
q cannot be resolved to a variable

at Rechner.main(Rechner.java:10)


Kann mir jemand weiterhelfen?

Danke im Voraus :)
 
Zuletzt bearbeitet:

stg

Top Contributor
Du definierst die Variable operator innerhalb der Schleife, damit ist sie außerhalb (und damit auch im Kopf der Schleife) nicht sichtbar.
 

rp1

Mitglied
Okay macht sinn, aber wie definiere ich den Operator denn außerhalb? Wird der dann nicht vor den Zahlen abgefragt und wenn der Operator außerhalb steht, wird er dann während der Schleife überhaupt nochmal abgefragt? Stehe etwas auf dem Schlauch..
 

stg

Top Contributor
Okay macht sinn, aber wie definiere ich den Operator denn außerhalb?
Genauso, wie sonst überall auch. Wieso sollte das denn einen Unterschied machen? Wichtig ist nur, dass die Variable vor dem ersten Gebrauch deklariert (und ggfls initialisiert) wurde.

Wird der dann nicht vor den Zahlen abgefragt und wenn der Operator außerhalb steht, wird er dann während der Schleife überhaupt nochmal abgefragt? Stehe etwas auf dem Schlauch..
Du redest irgendwie wirres Zeug für mich. Ich spreche nur von der Variablendefinition / deklaration, nichts weiter. Anschließend kannst du damit doch machen, was immer du willst.
 

rp1

Mitglied
Jaa die variable is doch so definiert:
Char operator = IO.readChar(...);

Wenn ich das jetzt außerhalb schreib, funktionierts dann noch wie vorher?

Oder muss ich was anderes schreiben?
 

stg

Top Contributor
Wenn du die verwendeten Begriffe nicht kennst, dann schlag sie doch bitte einfach erst einmal selbst nach.
 

rp1

Mitglied
Okay ich seh schon ich krieg hier keine vernünftige Hilfestellung. Stimmt denn wenigstens der Rest von dem Programm oder muss da auch etwas geändert werden?
 

stg

Top Contributor
Vorsagen ist keine vernünftige Hilfestellung. Ich gebe dir hingegen alle nötigen Hinweise, die dich zur Lösung deines Problems führen. Vorrausgesetzt du arbeitest selbst auch ein bisschen mit. Was du nun darauf machst ist natürlich deine Sache.
 

rp1

Mitglied
Ich will keine Musterlösung haben, nur komm ich nicht drauf was ich falsch mach und wo ich die Variable definieren muss. Und wenn ich wüsste wonach ich suchen muss, hätte ich nicht im Forum gefragt. Ich schau mir jetzt schon die ganze Zeit Videos zu switch und Schleifen an und komm trotzdem nicht drauf wo mein Fehler liegt. Jedes mal wenn ich die while Schleife mit reinschreib, krieg ich Fehlermeldungen, völlig egal wo ich die Variable definier. Deswegen frage ich hier im Forum, damit mir irgendjemand vielleicht ein mal zeigt wie es geht und ich das dann verinnerlichen kann und weiß. Weil dass ichs nicht selber versuch, kann man mir auf jeden Fall nicht unterstellen.
 

rp1

Mitglied
Deswegen stell ich meine eigentliche Frage nochmal ganz simpel: Wo definiere ich die Variable und wie, wenn doch die Abfrage der Variable teil meiner Schleife sein muss, damit der Rechner immer weiter macht.
 

Saheeda

Top Contributor
Deklaration:
char operator;

Initialisierung:
char operator = 0;


Java:
public static void main(String[] args) {
 
//außerhalb deklariert
char operator;
char q;

                while (operator != q) { 
		
                 //innerhalb deklariert
		char operator = IO.readChar("Rechenoperator: ");		
 
                  }
	}

Mehr isses nicht.

Zwei Bugs ist noch drin, aber die darfst du selbst rausfinden.
 
Zuletzt bearbeitet:

rp1

Mitglied
Okay danke, ich bin schon mal ein Stück weiter jetzt. Allerdings hört er jetzt auch nicht auf Zahlen abzufragen wenn ich q eingebe. Und er spuckt kein Ergebnis mehr aus. Hat das auch was mit der Definition der Variablen zu tun?

Mein Programm sieht jetzt so aus:

Java:
public class Rechner {
	
	public static void main(String[] args) {
		
		char operator;
		char q=0;
		double x=0;
		double y=0;
		
		double addition = x + y;
		double subtraktion = x - y;
		double multiplikation = x * y;
		double division = x / y;
		
		
		do {
			
			 x = IO.readDouble("Zahl 1: ");
			 y = IO.readDouble("Zahl 2: ");
			
			operator = IO.readChar("Rechenoperator:");
			} while (operator != q);
		
		
		
			switch (operator) {
			
			case '+': System.out.println("Ergebnis: " + addition); break;
			
			case '-': System.out.println("Ergebnis: " + subtraktion); break;
			
			case '*': System.out.println("Ergebnis: " + multiplikation); break;
			
			case '/': System.out.println("Ergebnis: " + division); break;
			
			case 'q': System.out.println("Ende!"); break;
			
			default: System.out.println("Ungültiger Operator.");
			
			}
		
		
	}

	
}
 

rp1

Mitglied
Habe den switch jetzt in die Schleife mit einbezogen und jetzt kommt zwar ein Ergebnis aber jedes mal das Ergebnis 0.0 .
Außerdem macht er bei q trotzdem weiter. Er bringt zwar die Meldung "Ende!" aber fängt dann wieder an mit der Abfrage.
 

Saheeda

Top Contributor
Nochmal: Schau dir bitte mal genau an, von wo bis wo deine Schleife geht.

Mach mal nen Test mit Papier und Stift. Gehe deinen Code Zeilenweise von oben nach unten durch.
 

rp1

Mitglied
Okay hab ich gemacht, ich komm trotzdem nicht dahinter. Ich geb mir echt alle Mühe das zu verstehen, aber egal wo ich die Schleife hinmach, es tritt immer irgend ein Fehler auf.

Sind die Variablen vielleicht auch noch falsch definiert?
 
Zuletzt bearbeitet:

njans

Top Contributor
Wenn du
Java:
	double addition = x + y;
double subtraktion = x - y;
double multiplikation = x * y;
double division = x / y;
diese Zahlen nicht neu berechnest, dann werden sie sich auch nicht ändern.
 

Saheeda

Top Contributor
Die Berechnungen stehen in Zeile 11-14. Das Einlesen der Zahlen in Zeile 19-20.
Woher soll das Programm wissen, dass es die Berechnungen noch einmal mit den neu eingelesenen Zahlen durchführen soll?
Die Variable, die unten ausgegeben wird, hat immer noch exakt denselben Wert wie am Anfang. Mit den eingelesenen Variablen x und y wird nichts gemacht.
 

rp1

Mitglied
Okay das funktioniert jetzt. Allerdings lässt sich die Abfrage mit q immer noch nicht beenden.

Muss q anders definiert werden, oder liegt es an der Bedingung für die Schleife?
 

rp1

Mitglied
Java:
public class Rechner {
	
	public static void main(String[] args) {
		
		char operator;
		char q = 0;
		double x=0;
		double y=0;
		
		
		
		do {
			 x = IO.readDouble("Zahl 1: ");
			 y = IO.readDouble("Zahl 2: ");
		
			 
			operator = IO.readChar("Rechenoperator:");
			
			double addition = x + y;
			double subtraktion = x - y;
			double multiplikation = x * y;
			double division = x / y;
			
		
		
		
			switch (operator) {
			
			case '+': System.out.println("Ergebnis: " + addition); break;
			
			case '-': System.out.println("Ergebnis: " + subtraktion); break;
			
			case '*': System.out.println("Ergebnis: " + multiplikation); break;
			
			case '/': System.out.println("Ergebnis: " + division); break;
			
			case 'q': System.out.println("Ende!"); break;
			
			default: System.out.println("Ungültiger Operator.");
			
			}
		} while (operator != q);	
		
	}
}

So schaut er bis jetzt aus. Es kommt die Meldung "Ende!" wies auch gewünscht ist, aber danach frägt er wieder die Zahlen ab.
 

rp1

Mitglied
Ich weiß nicht genau worauf du hinaus willst, aber ich hab das ganze jetzt mal so geschrieben:

Java:
		char operator;
		char q = 'q';
		double x=0;
		double y=0;

und es funktioniert :)

War es das worauf du mich hinweisen wolltest?
 

rp1

Mitglied
Okay ich denke ich habs jetzt verstanden. Ich hab die Variable "char q = 0" rausgenommen, weil sie eigentlich total unnötig ist, wenn man die Bedingung der Schleife richtig formuliert, mit "while (operator != 'q')..."

Vielen Dank für die Hilfe :)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
S while Schleife Taschenrechner Java Basics - Anfänger-Themen 1
N registrierkasse bzw taschenrechner mit while schleife Java Basics - Anfänger-Themen 9
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
R Operatoren Rechenoperation verwenden für Taschenrechner. Java Basics - Anfänger-Themen 32
J Taschenrechner mit mehr als 2 Zahlen. Java Basics - Anfänger-Themen 18
R Einfacher Taschenrechner mit Eclipse Java Basics - Anfänger-Themen 3
M Einfacher Taschenrechner Java Basics - Anfänger-Themen 2
Fiedelbambu Prüfen von Komma stelle beim Taschenrechner Java Basics - Anfänger-Themen 5
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
Y Taschenrechner programmieren Java Basics - Anfänger-Themen 3
G Taschenrechner ergibt Fehler in if-Abfrage Java Basics - Anfänger-Themen 6
K Erste Schritte "Taschenrechner" zeigt keine Komma Zahlen an. Java Basics - Anfänger-Themen 8
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
E JavaFX Taschenrechner Eingabe im Textfield beschränken Java Basics - Anfänger-Themen 2
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
C Taschenrechner (switch) in Taschenrechner mit Methoden umwandeln Java Basics - Anfänger-Themen 115
W Taschenrechner mit Switch case Java Basics - Anfänger-Themen 4
W Taschenrechner Java Basics - Anfänger-Themen 11
A Taschenrechner mit Gui erstellen Java Basics - Anfänger-Themen 9
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
P Taschenrechner mit unendlich vielen Eingabemöglichkeiten Java Basics - Anfänger-Themen 1
V Erste Schritte Taschenrechner mit beliebig vielen Zahlen Java Basics - Anfänger-Themen 5
S Taschenrechner Java Basics - Anfänger-Themen 13
P Taschenrechner Text übertragung Java Basics - Anfänger-Themen 3
S Compiler-Fehler Basic- Taschenrechner/ Fehler Java Basics - Anfänger-Themen 8
S Basic- Taschenrechner? Java Basics - Anfänger-Themen 7
P Hilfe bei Java Taschenrechner Java Basics - Anfänger-Themen 25
F Erste Schritte Frage zu simplem Taschenrechner(switch) Java Basics - Anfänger-Themen 16
L Mein Taschenrechner lässt sich plötzlich nicht mehr öffnen Java Basics - Anfänger-Themen 5
S Taschenrechner hilfe! Java Basics - Anfänger-Themen 17
H Java Taschenrechner Java Basics - Anfänger-Themen 4
R Variablen Taschenrechner mit Komfortfunktionen Java Basics - Anfänger-Themen 2
J RPN Taschenrechner - keine Lösung!! Java Basics - Anfänger-Themen 84
M Java Taschenrechner (if-else) Java Basics - Anfänger-Themen 11
L Taschenrechner mit switch und while funktioniert noch nicht richtig Java Basics - Anfänger-Themen 22
Q simpler Taschenrechner Java Basics - Anfänger-Themen 34
R Taschenrechner NullPointerException Java Basics - Anfänger-Themen 1
R Variablen Weitergehenderr Taschenrechner Java Basics - Anfänger-Themen 4
F Taschenrechner "Error loading class..." Java Basics - Anfänger-Themen 5
M Java Taschenrechner Programmieren Java Basics - Anfänger-Themen 12
P Erste Schritte Taschenrechner mit if-else Anweisung Java Basics - Anfänger-Themen 6
G Taschenrechner gibt nur 0.0 aus Java Basics - Anfänger-Themen 8
A Taschenrechner programmieren Java Basics - Anfänger-Themen 21
Z Java Taschenrechner Java Basics - Anfänger-Themen 6
J Kleiner Taschenrechner! Anfänger braucht Hilfe :( Java Basics - Anfänger-Themen 2
C Taschenrechner in Java Java Basics - Anfänger-Themen 6
J Erste Schritte Java CMD Taschenrechner mit Parametern! Java Basics - Anfänger-Themen 16
J Taschenrechner: Probleme Java Basics - Anfänger-Themen 5
E Taschenrechner problem! Ich komme nicht voran Java Basics - Anfänger-Themen 18
Lord.Djerun (Taschenrechner Netbeans) Komma nur einmal schreiben & 0 ersetzen Java Basics - Anfänger-Themen 1
Z Taschenrechner - Additions/Substraktions/Multiplikations/Divionsketten! Java Basics - Anfänger-Themen 4
D Taschenrechner Frage Java Basics - Anfänger-Themen 12
Z Sehr simpler Taschenrechner - Hilfe! Java Basics - Anfänger-Themen 10
Z Taschenrechner - Wie addiere,multipliziere und subtrahiere ich? Java Basics - Anfänger-Themen 6
D kleiner Taschenrechner mit switch fehlerhaft Java Basics - Anfänger-Themen 1
K Taschenrechner im GUI Java Basics - Anfänger-Themen 2
P Taschenrechner, operatoren Java Basics - Anfänger-Themen 4
D Simpler Taschenrechner Java Basics - Anfänger-Themen 6
A Anfänger Taschenrechner Frage Java Basics - Anfänger-Themen 14
R Erste Schritte Taschenrechner - Punkt-vor-Strich Rechnung Java Basics - Anfänger-Themen 1
S Operatoren Taschenrechner Ergebnis ausgeben Java Basics - Anfänger-Themen 7
A Taschenrechner zeigt Error Java Basics - Anfänger-Themen 7
J Taschenrechner Funktion Java Basics - Anfänger-Themen 18
M Taschenrechner fertigstellung Java Basics - Anfänger-Themen 1
N Methoden Taschenrechner Java Basics - Anfänger-Themen 2
F z = input.nextChar(); PROBLEM Taschenrechner Java Basics - Anfänger-Themen 7
J Scanner Taschenrechner? Java Basics - Anfänger-Themen 7
J Variablen Rechenzeichen und Zahlen verknüpfen für einen Taschenrechner Java Basics - Anfänger-Themen 17
B Klassen Java Taschenrechner mit Klassen und Methoden Java Basics - Anfänger-Themen 12
B Erste Schritte Brauche Hilfe bei einem Java-Taschenrechner Java Basics - Anfänger-Themen 11
R Methoden Taschenrechner Java Basics - Anfänger-Themen 4
P Taschenrechner , IF-Abfrage Java Basics - Anfänger-Themen 12
I Taschenrechner - Methoden implementieren Java Basics - Anfänger-Themen 5
I Java Starthilfe (Taschenrechner) Java Basics - Anfänger-Themen 7
J Taschenrechner Problemchen Java Basics - Anfänger-Themen 3
D Erste Schritte Taschenrechner Java Basics - Anfänger-Themen 11
K taschenrechner - Fehler beim Kürzen eines Bruches finden Java Basics - Anfänger-Themen 20
J Taschenrechner Punkt vor Strich Java Basics - Anfänger-Themen 9
A Taschenrechner programmieren Java Basics - Anfänger-Themen 5
M Ausklappbares Fenster bei grafischem Taschenrechner Java Basics - Anfänger-Themen 2
M Dividieren bei Grafischem Taschenrechner klappt nicht Java Basics - Anfänger-Themen 2
N Taschenrechner mit Unterprogra Java Basics - Anfänger-Themen 6
C Taschenrechner Java Basics - Anfänger-Themen 12
Z Taschenrechner programmieren Java Basics - Anfänger-Themen 5
E Erste Schritte Taschenrechner Java Basics - Anfänger-Themen 8
K Taschenrechner Java Basics - Anfänger-Themen 25
J Textfeld für Taschenrechner Java Basics - Anfänger-Themen 3
D Taschenrechner Java Basics - Anfänger-Themen 28
A Taschenrechner-GUI mit BorderLayout? Java Basics - Anfänger-Themen 6
W [PROJEKT] Simpler grafischer Taschenrechner Java Basics - Anfänger-Themen 8
M Taschenrechner mit JApplet Java Basics - Anfänger-Themen 26
J Grafischen Taschenrechner programmieren - Frage dazu Java Basics - Anfänger-Themen 12
W Taschenrechner Java Basics - Anfänger-Themen 2
T Tasten vom Taschenrechner? Java Basics - Anfänger-Themen 3
S Datentypen Taschenrechner Java Basics - Anfänger-Themen 13
J Taschenrechner Java Basics - Anfänger-Themen 5
J Taschenrechner Java Basics - Anfänger-Themen 9
M While bei einem Taschenrechner Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben