Taschen Rechner

Hi, brauche Hilfe
Was mach ich falsch?
bleibt immer bei den ) hängen
public class TaschenRechner
{
static double zahl1;
static double zahl2;
static double ergebnis;

public static void main(String[] args)
{
System.out.print("Ihre 1 Zahl= ");
zahl1 = Kbd.readDouble();
System.out.print("Zeichen= ");
String zeichen = Kbd.readLine();
System.out.print("Ihre 2 Zahl= ");
zahl2 = Kbd.readDouble();
if ( zeichen == + )
{
ergebnis=zahl1 + zahl2;
System.out.print(zahl1 + " " + zeichen + " " + zahl2 + " ist " +ergebnis);
}
else
{
if ( zeichen == - )
{
ergebnis=zahl1 - zahl2;
System.out.print(zahl1 + " " + zeichen + " " + zahl2 + " ist " +ergebnis);
}
else
{
if ( zeichen == * )
{
ergebnis=zahl1 * zahl2;
System.out.print(zahl1 + " " + zeichen + " " + zahl2 + " ist " +ergebnis);
}
else
{
if ( zeichen == / )
{
ergebnis=zahl1 / zahl2;
System.out.print(zahl1 + " " + zeichen + " " + zahl2 + " ist " +ergebnis);
}
else
{
System.out.print(„Error“);
}
}
}
}
}
}

Danke schon mal im Vorraus

LG Dennis

Strings werden mit .equals() auf Gleichheit geprueft.

Außerdem verwendest du ineinander verschachtelte if-Zweige. Nutze besser else if() { }, dann sparst du ein paar Klammern und es wird uebersichtlicher.

So sollte das funktionieren. Ist zwar jetzt nicht optimal der Code, aber er funktioniert erstmal.

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

public class TaschenRechner {
static double zahl1;
static double zahl2;
static double ergebnis;
static String zeichen;

public static void main(String[] args) {
BufferedReader bk = new BufferedReader (new InputStreamReader(System.in));

System.out.print("Ihre 1 Zahl= ");
try {
zahl1 = Double.parseDouble(bk.readLine());
} catch (Exception e) {}

System.out.print("Zeichen= ");
try {
zeichen = bk.readLine();
} catch (Exception e) {}

System.out.print("Ihre 2 Zahl= ");
try {
zahl2 = Double.parseDouble(bk.readLine());
} catch (Exception e) {}

if (zeichen.equals("+")) {
ergebnis=zahl1 + zahl2;
System.out.print(zahl1 + " " + zeichen + " " + zahl2 + " ist " +ergebnis);
} else if (zeichen.equals("-")) {
ergebnis=zahl1 - zahl2;
System.out.print(zahl1 + " " + zeichen + " " + zahl2 + " ist " +ergebnis);
} else if (zeichen.equals("*")) {
ergebnis=zahl1 * zahl2;
System.out.print(zahl1 + " " + zeichen + " " + zahl2 + " ist " +ergebnis);
} else if (zeichen.equals("/")) {
ergebnis=zahl1 / zahl2;
System.out.print(zahl1 + " " + zeichen + " " + zahl2 + " ist " +ergebnis);
} else {
System.out.print(„Error“);
}
}
}

MfG Maximus

Hi, funzt wunderbar danke

Strings werden mit .equals() auf Gleichheit geprueft.

Ich bin doch noch ein Anfänger. Keine Ahnung was das ist.

Außerdem verwendest du ineinander verschachtelte if-Zweige.
Nutze besser else if() { }, dann sparst du ein paar Klammern
und es wird uebersichtlicher.

Klinkt logischer, wusste nicht das das Geht.

So sollte das funktionieren. Ist zwar jetzt nicht optimal der
Code, aber er funktioniert erstmal.

egal ob er optimal ist, funz also super

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

wo für steht den java.io.BufferedReader, java.io.InputStreamReader;
tut irgend etwas importieren aber was?

public class TaschenRechner {
static double zahl1;
static double zahl2;
static double ergebnis;
static String zeichen;

public static void main(String[] args) {
BufferedReader bk = new BufferedReader (new
InputStreamReader(System.in));

System.out.print("Ihre 1 Zahl= ");
try {
zahl1 = Double.parseDouble(bk.readLine());
} catch (Exception e) {}

System.out.print("Zeichen= ");
try {
zeichen = bk.readLine();
} catch (Exception e) {}

System.out.print("Ihre 2 Zahl= ");
try {
zahl2 = Double.parseDouble(bk.readLine());
} catch (Exception e) {}

if (zeichen.equals("+")) {
ergebnis=zahl1 + zahl2;
System.out.print(zahl1 + " " + zeichen + " " :+ zahl2 + "
ist " +ergebnis);
} else if (zeichen.equals("-")) {
ergebnis=zahl1 - zahl2;
System.out.print(zahl1 + " " + zeichen + " " :+ zahl2 + "
ist " +ergebnis);
} else if (zeichen.equals("*")) {
ergebnis=zahl1 * zahl2;
System.out.print(zahl1 + " " + zeichen + " " :+ zahl2 + "
ist " +ergebnis);
} else if (zeichen.equals("/")) {
ergebnis=zahl1 / zahl2;
System.out.print(zahl1 + " " + zeichen + " " :+ zahl2 + "
ist " +ergebnis);
} else {
System.out.print(„Error“);
}
}
}

MfG Maximus

MmfGz Denni

Hi,
wenn du noch ein Anfänger bist empfehle ich dir http://openbook.galileocomputing.de/javainsel8/
Lg der einzigware

Strings werden mit .equals() auf Gleichheit geprueft.

Ich bin doch noch ein Anfänger. Keine Ahnung was das ist.

Siehst du, wenn du dir den Code anschaust, den ich gepostet habe. Man nimmt nicht String x == „abc“ sondern String x.equals(„abc“)

Außerdem verwendest du ineinander verschachtelte if-Zweige.
Nutze besser else if() { }, dann sparst du ein paar Klammern
und es wird uebersichtlicher.

Klinkt logischer, wusste nicht das das Geht.

Das sind Grundlagen, schau dir wirklich mal das Buch an, welches „Der einzigware“ gepostet hat.

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

wo für steht den java.io.BufferedReader,
java.io.InputStreamReader;
tut irgend etwas importieren aber was?

Na eben genau die beiden Klassen, die ich verwende, um die Tastatureingaben einzulesen. Ich weiß ja nicht, was Kbd in deinem Code fuer einen Datentyp hatte. Der Teil fehlt.

MfG Maximus

Das sind Grundlagen, schau dir wirklich mal das Buch an,
welches „Der einzigware“ gepostet hat.

Mach ich

Ich weiß ja nicht, was Kbd in
deinem Code fuer einen Datentyp hatte. Der Teil fehlt.

Kbd:

import java.io.BufferedReader; //kenn ich doch :smiley:
import java.io.InputStreamReader; //das auch :smiley:
import java.io.IOException;

/**
Eine Klasse, die drei statische Methoden definiert, um von
der Tastatur Strings und Zahlen einzulesen.
Gedacht für Anfänger in der Java-Programmierung.
Verwendet privat den erforderlichen BufferedReader, behandelt
I/O-Fehler und wandelt Strings in Zahlen um.
*/

public class Kbd
{ /**
BufferedReader - Objekt, um von der Tastatur Zeichen einzulesen
*/
private static BufferedReader reader =
new BufferedReader(new InputStreamReader(System.in));

/**
Liest eine Zeile von der Tastatur und verwandelt sie in
eine integer-Zahl. Eingabe darf NUR Ziffern 0…9
enthalten. Auch LEERZEICHEN sind NICHT ERLAUBT.
@return ganze Zahl, die der Benutzer eingegetippt hat
*/
public static int readInt()
{ String inputString = readLine();
int n = Integer.parseInt(inputString);
return n;
}

/**
Liest eine Zeile von der Tastatur und verwandelt sie in
eine double-Zahl. Eingabe muss das Format einer
floatingpoint-number haben. LEERZEICHEN sind NICHT ERLAUBT.
@return die Zahl, die der Benutzer eingegetippt hat
*/
public static double readDouble()
{ String inputString = readLine();
double x = Double.parseDouble(inputString);
return x;
}

/**
Liest eine Zeile von der Tastatur ein. Falls
unwahrscheinlicherweise ein Eingabefehler auftritt
bricht das Programm ab.
@return die vom Benutzer eingetippte Zeile
*/
public static String readLine()
{ String inputLine = „“;

try
{ inputLine = reader.readLine();
}
catch(IOException e)
{ System.out.println(e);
System.exit(1);
}

return inputLine;
}

/**
Wartet auf ein Return von der Tatsatur ein. Falls
unwahrscheinlicherweise ein Eingabefehler auftritt
bricht das Programm ab.
Die Methode waitForKey() ist z. B. anzuwenden,
wenn ein Programm anhalten soll um erst nach Eingabe
von Return fortzufahren.
*/
public static void waitForKey()
{ String dummy;

try
{ dummy = reader.readLine();
}
catch(IOException e)
{ System.out.println(e);
System.exit(1);
}
}
}