1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

fehlermeldung

  • Klaudia
  • 12. Oktober 2006 um 15:22
  • Unerledigt
  • Klaudia
    4
    Klaudia
    Mitglied
    Punkte
    145
    Beiträge
    26
    • 12. Oktober 2006 um 15:22
    • #1

    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

  • Paulchen
    1
    Paulchen
    Gast
    • 12. Oktober 2006 um 15:30
    • #2

    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')
  • Klaudia
    4
    Klaudia
    Mitglied
    Punkte
    145
    Beiträge
    26
    • 12. Oktober 2006 um 15:52
    • #3

    danke geht :]

    hab aber das nächste problem..

    Code
    while (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;
    Alles anzeigen



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

  • java-girl
    14
    java-girl
    Mitglied
    Reaktionen
    7
    Punkte
    2.037
    Beiträge
    357
    • 12. Oktober 2006 um 16:39
    • #4
    Zitat von Klaudia
    Code
    while (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;
    Alles anzeigen


    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!

  • Klaudia
    4
    Klaudia
    Mitglied
    Punkte
    145
    Beiträge
    26
    • 12. Oktober 2006 um 17:21
    • #5

    was muss ich jetzt also tun, damit die zahlen nicht so angezeigt werden?

    das andere problem hab ich gelöst

  • sauzachn
    17
    sauzachn
    Mitglied
    Reaktionen
    51
    Punkte
    3.101
    Beiträge
    606
    • 12. Oktober 2006 um 20:12
    • #6
    Zitat von Klaudia

    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

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

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

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung