1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

fehlermeldung

  • Klaudia
  • 12. Oktober 2006 um 15:22
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Klaudia
    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
    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
    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
    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.

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

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum