• 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

  • Um Sourcecode schön darzustellen, kannst du [noparse]

    Code
    [/noparse]-Tags verwenden:
    
    
    [CODE]if(bla) {
        /* mach was */
    }
    Zitat von Klaudia

    wenn 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.

    Code
    wahl='d'

    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:

    Code
    if(wahl=='d')
  • danke geht :]

    hab aber das nächste problem..



    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??


  • 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.

    There's no better place than 127.0.0.1!

  • 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.

    Dipper dipper dii dipper dii dipper dii duuu

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!