Einfaches Rechenprogramm schlägt fehl.

Kestrel

Mitglied
Hallo liebe User,

ich bin gerade frisch in die Java-Programmierung geraten und einer meiner ersten Versuche lässt mich schon verzweifeln.....

Das Programm soll einfach 2 Zahlen über die Console einlesen und diese dann nach auswahl des Operators berechnen und das Ergebnis ausgeben.

Ich habe das einlesen der Zahlen sowie des Strings für den Operator in 2 Klassen geparkt und greife dann in der Main-Klasse auf sie zu.

hier die 2 externen Klassen:

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class IO {
public static Double readInt()
{
BufferedReader in;
double zahl = 0;
String s;
boolean fehler = true;
while (fehler == true)
{
in = new BufferedReader(new InputStreamReader(System.in));

try
{
s = in.readLine();
zahl = Double.parseDouble(s);
fehler = false;
}
catch (Exception e)
{
System.out.println("Eingabe fehlerhaft "+ e.getMessage());
System.out.println();
System.out.println("Erneute Eingabe: ");
}
}
return zahl;

}
public static String readStr()
{
BufferedReader in1;
String sx = null;
boolean fehler2 = true;


while (fehler2 == true)
{
in1 = new BufferedReader(new InputStreamReader(System.in));

try
{
sx = in1.readLine();
fehler2 = false;

}
catch (Exception e)
{
System.out.println("Eingabe fehlerhaft "+ e.getLocalizedMessage());
System.out.println();
System.out.println("Erneute Eingabe: ");
}

}
return sx;
}

}

und hier dann die Main-Klasse:

public class Main {


public static void main(String[] args){

System.out.println("Dieses Programm berechnet 2 Zahlen");
System.out.println("Bitte gebens Sie die erste Zahl ein: ");
double zahl1;
zahl1 = IO.readInt();

System.out.println("Bitte geben Sie die zweite Zahl ein: ");
double zahl2;
zahl2 = IO.readInt();



System.out.println("Bitte geben Sie die Rechenart an (+,-,*,/): ");

String rechenart;
rechenart = IO.readStr();

System.out.println("Sie haben die Rechenart "+ rechenart + " gewählt.");
//bis hier alles ok
System.out.println();

System.out.println("Das Ergebnis ist: ");

if (rechenart == "+")
{
System.out.println(zahl1 + zahl2);
}
else
if (rechenart == "-")
{
System.out.println(zahl1 - zahl2);
}
else
if (rechenart == "*")
{
System.out.println(zahl1 * zahl2);
}
else
System.out.println(zahl1 / zahl2);

}
}

das Programm läuft problemlos bis zum if part ab und spuckt auch ein Ergebniss aus jedoch immer nur das else ( zahl1 / zahl2).
Da ich noch relativ unerfahren bin hab ich leider nicht die geringste Ahnung wo ich etwas falsch gemacht haben könnte.
Eine Vermutung habe ich dennoch, evtl. könnte es an der Übergabe des Strings liegen....?!

für baldige Hilfe wäre ich sehr dankbar...

Gruß Kestrel
 
Hallo,

benutze doch bitte die Code-Tags.
Das Problem ist, dass du den String (rechenart) mit == vergleichst. Damit wird nur überprüft ob das Object(in deinem Fall String) an der gleichen Speicherstelle liegt. Um String oder andere Objecte zu vergleichen solltest du equals nahmen.

Code:
rechenart.equals("irgendwas")

MFG

zEriX
 
Danke für die schnelle Hilfe zEriX... jetzt funktioniert alles Prima.

Das nächste mal verwende ich Code-Tags... habe sie eben übersehen. ^^
 
Zurück