hallo,
ich hab wieder ein problem...
also bei diesem stückerl hab ich anscheinend was falsch gemacht:
char wahl;
wahl = einlesen.next().charAt(0); //einlesen Wahl
preis = 0;
if (wahl = 'a')
preis = preis + 5.49;
else if (wahl='b')
preis = preis + 4.99;
else if (wahl='c')
preis = preis + 6.79;
else if (wahl='d')
preis = preis + 7.69;
wenn ich kompiliere dann enstehen eben bei diesen zeilen die fehler; incompatible types
found: char
required: boolean
else if (wahl='a/b/c/d')
danke schon mal
fehlermeldung
-
-
Um Sourcecode schön darzustellen, kannst du [noparse]
Zitat von Klaudiawenn ich kompiliere dann enstehen eben bei diesen zeilen die fehler; incompatible types
found: char
required: boolean
else if (wahl='a/b/c/d')Ein "=" ist in Java eine Zuweisung; d.h.
weist der Variablen "wahl" den Wert 'd' zu und gibt diesen Wert zurück (in diesem Fall hat dieser Wert den Typ char, daher "found: char"). Mit if-Statements kannst du aber nur boolean-Werte prüfen - eben, ob diese den Wert "true" oder den Wert "false" haben (daher "required: boolean"). Was du brauchst, ist daher ein Vergleich, der in Java mit "==" durchgeführt wird und ein Ergebnis vom Typ boolean liefert. Folgendes sollte funktionieren:
-
danke geht :]
hab aber das nächste problem..
Code
Alles anzeigenwhile (preis>=0) { System.out.print("Bitte ganzzahlig bezahlen:"); bezahlung = einlesen.nextInt(); System.out.println(); System.out.print("Du hast "); System.out.print(bezahlung); System.out.println(" Euro gegeben."); if (bezahlung > preis) { System.out.print("Danke fuer die "); System.out.print(bezahlung-preis); System.out.println(" Euro Trinkgeld ;] !!"); } else { preis=0;
es geht bis zum trinkgeld gut, nur dann beginnt das ganze von anfang und kommt nie zum ende...
außerdem, wenn der preis zb 6.4euro ist, man zb 7 zahlt, dann kommt 0.59999999 euro trinkgeld. wieso nicht einfach 0.6?? -
Code
Alles anzeigenwhile (preis>=0) { System.out.print("Bitte ganzzahlig bezahlen:"); bezahlung = einlesen.nextInt(); System.out.println(); System.out.print("Du hast "); System.out.print(bezahlung); System.out.println(" Euro gegeben."); if (bezahlung > preis) { System.out.print("Danke fuer die "); System.out.print(bezahlung-preis); System.out.println(" Euro Trinkgeld ;] !!"); } else { preis=0;
Wo machst du bitte die Schleife zu und wo das else? Wenn schon, dann bitte alles vollständig angeben.Zitat
es geht bis zum trinkgeld gut, nur dann beginnt das ganze von anfang und kommt nie zum ende...
Ja, das ist auch logisch weil du eine Endlosschleife gemacht hast. Deine Bedingung while (preis>=0) ist immer true weil du den Preis nie auf 0 setzt.Zitat
außerdem, wenn der preis zb 6.4euro ist, man zb 7 zahlt, dann kommt 0.59999999 euro trinkgeld. wieso nicht einfach 0.6??
Das ist eine Problem mit float-Zahlen. -
was muss ich jetzt also tun, damit die zahlen nicht so angezeigt werden?
das andere problem hab ich gelöst -
was muss ich jetzt also tun, damit die zahlen nicht so angezeigt werden?
Zur Darstellung von Geldbeträgen benutzt man üblicherweise keine Float-Zahlen (eben wegen der Nichtdarstellbarkeit von vielen Fließkommazahlen im Binärsystem, die du schon beobachtet hast).Es gibt mehrere Wege, dieses Problem in den Griff zu bekommen. Am einfachsten in deinem Trivialbeispiel ist es wohl, mit Integers zu rechnen und die Einheit auf 1 Cent festzusetzen. "preis = 100;" wäre also 1 Euro.
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!