Variablen und if

Xedir

Mitglied
Guten abend zusammen,
Ich bin neu hier im Forum (genau so neu wie mit Java) und habe direkt eine Frage
die für die Java-Veteranen hoffentlich mit einem lächeln beantwortet werden kann.

Das Problem ist, dass ich zu beginn nach ein Paar Experimenten mit Java einen kleinen Taschenrechner
schreiben wollte. Das Programm läuft auch ganz gut wenn ich 5*5 oder ähnliches rechnen möchte.
Jetzt möchte ich allerdings ein Paar Funktionen erweitern und möchte dafür den Wert der Variablen "lösung" im späteren Verlauf benutzen. Leider (und hier tritt das Problem auf wenn man nach einer
Lösung für diese frage googeln möchte, deshalb versuche ich es mal so gut zu beschreiben wie ich
es kann) kommt dieser Wert nicht aus den { } "raus" mit denen diese If-Abfrage eingegränzt ist.
Heißt, wenn ich nach diesem if und else if Gedöns etwas mit dieser Variablen machen möchte sagt mir Exlipse, dass lösung nicht belegt wird.

Hier mein Code

Java:
package Taschenrechner;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
// import java.util.Random;
// import java.io.*;
// import java.util.Scanner;

public class Taschenrechner 
	{
	
	public static void main (String [] args) throws IOException
		{
		
		InputStreamReader isr = new InputStreamReader(System.in) ;
		BufferedReader br= new BufferedReader(isr);
		
		boolean gelöst = false;
		double inputzhaleins;
		double inputzahlzwei;
		char rechenart ;
		double lösung ;

		while (gelöst = true)

			{
				inputzhaleins = Integer.parseInt(br.readLine());
				rechenart = (char) new InputStreamReader(System.in).read ();
				inputzahlzwei = Integer.parseInt(br.readLine());
				{

					if (rechenart == '*' )
					{
						 lösung = ( inputzhaleins * inputzahlzwei)  ;					
							System.out.println("Das Ergebnis ist : " + (lösung) );
					}
					
					else if (rechenart == '/')
					{
						 lösung = (  inputzhaleins / inputzahlzwei)  ;
							System.out.println("Das Ergebnis ist : " + (lösung)) ;
					}
					else if (rechenart == '+')
					{
						 lösung = ( inputzhaleins + inputzahlzwei)  ;
							System.out.println("Das Ergebnis ist : " + (lösung) );
					}
					else if (rechenart == '-')
					{
						 lösung = ( inputzhaleins - inputzahlzwei)  ;
							System.out.println("Das Ergebnis ist : " + (lösung) );
					}
					else
						System.out.println("Ungültige zeichen eingegeben");
					
				}
			}
		}
	}

[/Java]
 

HimBromBeere

Top Contributor
Das sollte eigtl. nur als Warnung da stehen, oder bekomms tdu eine Fehlermeldung?

EDIT: Achso... du musst deiner Variablen einen Startwert zuweisen, z.B. double lösung = 0;
Übrigens: Umlaute mögen manche Compiler nicht so und sehen auch ungut aus... nach Möglichkeit vermeiden
 

njans

Top Contributor
Wenn du in Methoden variablen deklarierst, dann musst du diese immer initialisieren:
Java:
boolean gelöst = false;
double inputzhaleins = 0d;
double inputzahlzwei = 0d;
char rechenart = 'a';
double lösung  = 0d;
 

Xedir

Mitglied
Ahhh, perfekt, danke, jetzt läuft es. Er nimmt obwohl ich lösung=0 habe den in der If-Abfrage errechneten Wert.
Ziel des ganzen soll sein, am Ende ohne die Lösung erneut eingeben zu müssen mit dem Wert weiter zu
rechnen, also direkt mit einem Zeichen anzufangen.
 

HimBromBeere

Top Contributor
Na dann reicht es doch, "gelöst" auf true zu setzen, wenn der Nutzer tatsächlich eine NEU-Eingabe macht (dafür bräcuhtest du natürlich in deinem UI einen entsprechenden Menüeintrag). Dann läuft die while-Schleife solange, bis ein Endergebis vorliegt.
 

njans

Top Contributor
Java:
while(gelöst = true)
ich weiß nun nicht, ob du das wirklich willst, das ist nämlich kein Vergleich, sondern eine Zuweisung.
gelöst == true wäre eine Prüfung auf den Wahrheitswert. Nebenbei würde das das Gleiche sein wie while(gelöst), da gelöst ja schon einen Wahrheitswert hat.
 

Xedir

Mitglied
Also jetzt ist es so, dass ich nach jeder Eingabe Enter drücke.
Z.B. 5 [Enter] * [Enter] 5 [Enter] dann steht da "Das Ergebnis ist : 25". Danach kann ich direkt weiter
rechnen. Zum Beispiel jetzt 2 [Enter] / [Enter] 5 [Enter] ohne, das Programm neu zu starten. Mein Ziel ist
es aber, dass auf "Wunsch" -also wenn ich die zweite Eingabe mit einem Rechenzeichen beginne - die
Lösung (in diesem Fall 25) behalten wird und ich z.B. nur / [Enter] 1 [Enter] eingebe und er mir sagt "Das
Ergebnis ist 25"
 

Xedir

Mitglied
Java:
while(gelöst = true)
ich weiß nun nicht, ob du das wirklich willst, das ist nämlich kein Vergleich, sondern eine Zuweisung.
gelöst == true wäre eine Prüfung auf den Wahrheitswert. Nebenbei würde das das Gleiche sein wie while(gelöst), da gelöst ja schon einen Wahrheitswert hat.

AAhhh, jetzt verstehe ich auch, warum wenn ich
Java:
boolean gelöst = false;
auf true gesetzt habe, die Eingabe nicht ging xD
Danke dafür ;)
 

HimBromBeere

Top Contributor
Dann würde das hier erstmal aber eine Exception ausspucken:
Java:
inputzhaleins = Integer.parseInt(br.readLine());
rechenart = (char) new InputStreamReader(System.in).read ();
inputzahlzwei = Integer.parseInt(br.readLine());
denn hier würdest du als erstes ja keinen Int einlesen, sondern dann ein Zeichen. D.h. du musst erstmal das Zeichen lesen, und dann eine Fallunterscheidung machen: Zahl / Rechenzeichen. Kommt dabei heraus, dass das Zeichen ein Operator ist, musst du die inputzahleins auf Lösung setzen, um damit weiter rechnen zu können, ansonsten halt einfach die neue Zahl.
 

Xedir

Mitglied
Okay, soweit hatte ich noch nicht gedacht. Dann werde ich mir erstmal anschauen wie ich das Problem mit einer Fallunterscheidung löse.
Das mach ich aber nicht mehr heut Abend sondern geh da Morgen frisch ans Werk, euch 2 erstmal danke für die schnelle und gute Hilfe
 

x22

Bekanntes Mitglied
Ich bevorzuge immer eine case-Anweisung anstatt einer if-Anweisung..
Hast dich schonmal damit beschäftigt?.. finde ich eleganter:)

Gerade bei einem Taschenrechner bietet sich das an:

Java:
char rechenart;

switch(rechenart){

case '+': //code...
case '/': //code...

//etc.
}


Best regards,
x22
 
Zuletzt bearbeitet:

x22

Bekanntes Mitglied
Ja, das hab ich in dem Kommentar //code.. mit einbezogen, sonst funktioniert das ganze schlecht :D

Danke aber für deinen Hinweis.:)

Best regards,
x22
 

Xedir

Mitglied
Danke x22 für den Hinweis, bisher habe ich nur nen bisschen mit Variablen definieren gearbeitet und hab nen kleines
Spiel aus nen Tutorial gemacht wo man Zahlen raten muss. Der Taschenrechner ist eine abgewandelte Version davon.
Mit den Case Funktionen hab ich noch nichts gemacht aber ich hab jetzt
Java:
				switch (rechenart) {
				case '*' :  lösung = ( inputzhaleins * inputzahlzwei) ;
				}
einfach mal eingefügt und es ist auf jeden Fall sehr viel übersichtlicher und leichter zu verstehen/bearbeiten.

Xedir
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Variablen-Werte ändern sich nicht... wieso?? Java Basics - Anfänger-Themen 4
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
T Variablen Java Basics - Anfänger-Themen 1
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
M Aufsummieren von variablen Wertegrößen Java Basics - Anfänger-Themen 17
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
ashi Variablen aufrufen Java Basics - Anfänger-Themen 17
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
C Konstruktoren und Variablen Java Basics - Anfänger-Themen 42
F Auf Variablen eines Konstruktors zugreifen Java Basics - Anfänger-Themen 4
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
Arif Vererbung Methodenvererbung mit finalen Variablen Java Basics - Anfänger-Themen 1
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
S Variablen Variablen in einer Schleife erstellen lassen Java Basics - Anfänger-Themen 11
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
F Variablen Werte einer Klasse überschreiben Java Basics - Anfänger-Themen 4
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
J Frage dazu Variablen klassenübergreifend zu verändern Java Basics - Anfänger-Themen 22
M Java Instanz-Variablen ? Java Basics - Anfänger-Themen 3
B Variablen von Methoden übertragen Java Basics - Anfänger-Themen 2
M Variablen umbenennen Java Basics - Anfänger-Themen 1
T Körper Brechnung - Lokale Variablen in Methoden übergeben Java Basics - Anfänger-Themen 10
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
mars90 Fehler in der Variablen Deklaration Java Basics - Anfänger-Themen 8
E Variablen in formatierter Ausgabe Java Basics - Anfänger-Themen 15
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
M Komisches Verhalten der Variablen Java Basics - Anfänger-Themen 6
H Variablen Multiplikation einer inkrementierten Variablen Java Basics - Anfänger-Themen 5
scratchy1 Variablen vertauschen wenn Bedingung "umgedreht" wird Java Basics - Anfänger-Themen 40
J Variablen mit einer anderen Klasse bekannt machen Java Basics - Anfänger-Themen 7
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
A Übergreifende Variablen Java Basics - Anfänger-Themen 17
A Variablen Verständnisfrage bzgl. Variablen/Referenzen Java Basics - Anfänger-Themen 3
H Variablen Methode zum Abfragen von Variablen aus Subklassen Java Basics - Anfänger-Themen 9
P Variablen Variablen voneinander abhängig Java Basics - Anfänger-Themen 54
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
L Variablen in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
M For-Schleife durch zwei versch. Variablen begrenzen Java Basics - Anfänger-Themen 27
J Klassen Variablen in andere Klassen oder Methoden übernehmen Java Basics - Anfänger-Themen 1
P Liste auslesen und in Variablen speichern Java Basics - Anfänger-Themen 7
temi Redundante Variablen Java Basics - Anfänger-Themen 29
Aprendiendo Zweifel mit versteckter Variablen Java Basics - Anfänger-Themen 16
L Variablen einmal nur zu weisen Java Basics - Anfänger-Themen 62
D Statische Variablen/Methoden Java Basics - Anfänger-Themen 3
R Abfrage von Variablen in Unterklassen einer ArrayList Java Basics - Anfänger-Themen 9
M Listener für Button - Wert von Variablen verändern Java Basics - Anfänger-Themen 14
S Vererbung Variablen klassenübergreifend nutzen Java Basics - Anfänger-Themen 42
R Auf Variablen einer anderen Klasse zugreifen? Java Basics - Anfänger-Themen 1
D Fehlermeldung obwohl Variablen bereits deklariert sind? Java Basics - Anfänger-Themen 14
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
Aruetiise Variablen JFrame und Variablen Java Basics - Anfänger-Themen 3
L Variablen dekleration + reset Java Basics - Anfänger-Themen 16
T Übernahme einer Variablen im ActionListener/ActionEvent Java Basics - Anfänger-Themen 2
D Kapselung final Variablen mit Getter? Java Basics - Anfänger-Themen 2
C Variablen von einem JFrame in einen anderen übertragen Java Basics - Anfänger-Themen 3
P Interface Variablen-Inhalte werden nicht übergeben Java Basics - Anfänger-Themen 3
C Variablen in Schleifen außerhalb verwenden Java Basics - Anfänger-Themen 2
S Variablen Flexible Variablen Namen Java Basics - Anfänger-Themen 3
R Erste Schritte 3 Variablen hochzählen lassen Java Basics - Anfänger-Themen 1
RowdyN Variablen Variablen beliebig benennen? Java Basics - Anfänger-Themen 6
S OOP Variablen zwischen mehreren Klassen Java Basics - Anfänger-Themen 11
T Koordinatensystem zeichnen - Variablen merken? Quadratische Funktion zeichnen? Java Basics - Anfänger-Themen 5
H Variablen einer Schleife zwischenspeichern Java Basics - Anfänger-Themen 2
P Klassen Variablen von einer Klasse zur anderen Java Basics - Anfänger-Themen 5
H Objekt überschreibt Variablen vorheriger Objekte Java Basics - Anfänger-Themen 2
P Variablen in Excel speichern Java Basics - Anfänger-Themen 6
S PHP Aufruf mit mehreren Variablen Java Basics - Anfänger-Themen 2
F Variablen unterschiedlicher Datentypen Java Basics - Anfänger-Themen 6
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
L Vergleich zweier Variablen, mit Abweichung Java Basics - Anfänger-Themen 3
P Variablen einer Methode in andere Method übergeben Java Basics - Anfänger-Themen 6
G Variablen Verwendung von Variablen in anderer Klasse Java Basics - Anfänger-Themen 6
P Textfelder in Variablen speichern Java Basics - Anfänger-Themen 13
K arraygröße durch variablen Konstruktor? Java Basics - Anfänger-Themen 7
J Vererbung Variablen aus Superklasse übernehmen Java Basics - Anfänger-Themen 2
L Variablen aus TXT Datei auslesen und vergleichen. Java Basics - Anfänger-Themen 5
K Welchen Typ haben Variablen in Default-Methoden und in statischen Methoden in Schnittstellen? Java Basics - Anfänger-Themen 4
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
L zwei Variablen gleichzeitig übergeben Java Basics - Anfänger-Themen 6
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
D Klassen Verhalten von Klassenvererbung bei Variablen Java Basics - Anfänger-Themen 1
G Alle Objekte und Variablen automatisch ausgeben Java Basics - Anfänger-Themen 7
S OOP Werte von Vektoren mit 3 Variablen ausgeben lassen Java Basics - Anfänger-Themen 3
A Variablen aus einer Schleife gezielt auslesen Java Basics - Anfänger-Themen 11
A Methoden Zugriff auf eingelesene Variablen in der main Methode (ohne Änderung der Parameterliste) Java Basics - Anfänger-Themen 4
K Enigma, variablen übernehmen Java Basics - Anfänger-Themen 6
F Erste Schritte Dynamische Variablen Java Basics - Anfänger-Themen 15
N Variablen zurück casten Java Basics - Anfänger-Themen 3
M Repräsentation von variablen/OOP Java Basics - Anfänger-Themen 2
B Probleme beim einlesen einer short variablen für einen Array Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben