• Hi Leute
    Ich habe die Aufgabe bekommen ein prog namens Eliza zu programmieren.

    so weit so gut
    ging alles gut
    im Programm soll der BMI einer Person, welche Ihre Daten eingibt, errechnet werden.

    sieht bei mir so aus

    Code
    if (BMI < 20)
    aus.println("Du solltest zunehmen.");
    else if (BMI > 25)
    aus.println("Du solltest unbedingt Sport treiben.");
    else
    aus.println("Du bist fit.");

    nur gibt er mir bei einem BMI von über 20 raus die Person solle Sport machen, also als ob sie einen BMI von über 25 hätte.

    Wie lautet die Bedingung damit ich für die Werte zwischen 20 und 25 raubekomme, dass die Person fit sei?

    Danke im Vorraus
    Mfg
    Elomaniak

  • Schreib das Programm nochmal mit vernünftiger Klammersetzung ({, }) und Einrückung, dann wird es funktionieren ;)

    so sieht mein code aus

    weiss jetzt auch nicht wo der wurm drin ist

  • Abgesehen davon, dass die BMI-Berechnung soundso falsch ist, verwendest du Ganzzahlendivision, die nicht das Ergebnis liefert, das du dir erwartest. Wenn du dir einfach den Wert der Variablen BMI ausgeben würdest, dann könntest du auch erkennen, dass die ifs nicht dein Problem sind.

  • Abgesehen davon, dass die BMI-Berechnung soundso falsch ist, verwendest du Ganzzahlendivision, die nicht das Ergebnis liefert, das du dir erwartest. Wenn du dir einfach den Wert der Variablen BMI ausgeben würdest, dann könntest du auch erkennen, dass die ifs nicht dein Problem sind.

    wenn du wissen würdest dass die rechnung für den BMI Gewicht/(Groesse^2) ist würdest du hier nicht posten

    und ich muss die grösse in cm eingeben

  • Wenn du wüsstest, dass du hier bist, weil du Hilfe brauchst, würdest du Leute, die dich auf dein Problem hinweisen, nicht anmachen.

    Ich hab gedacht, da muss man 100 von der Größe abziehen. Stimmt aber anscheinend nicht. Aber v.a. hab ich mich verlesen. Sorry.

    Trotzdem verwendest du Ganzzahlendivisionen und handelst dir dadurch Probleme ein. Nachdem Größe häufig zwischen 100 und 200 liegen wird, ist "groesse/100" in diesen Fällen immer 1. Das Quadrat davon auch. Wie ich gerade sehe, hast du's eine Zeile weiter oben sogar richtig gemacht...

    Einmal editiert, zuletzt von Ringding (17. November 2008 um 18:26)

  • ok sorry für meine antwort, deine erste war aber auch nicht ganz die feine englische art

    also als ergebis für den BMI kommt ein korrekter Wert raus.
    die Frage ist nur wie ich es hinbekomme dass er für einen BMI von 20 bis 25 Als Antwort "Du bist fit" rausgibt.

  • also als ergebis für den BMI kommt ein korrekter Wert raus.
    die Frage ist nur wie ich es hinbekomme dass er für einen BMI von 20 bis 25 Als Antwort "Du bist fit" rausgibt.

    ähm, hallo? Nachdem deine if/else if-Kaskade korrekt ist, wie bereits mehrfach festgestellt wurde, muss beim BMI etwas falsches rauskommen. Woher willst du überhaupt wissen, dass der Wert richtig ist?

    There's no better place than 127.0.0.1!

  • ok jetzt hab ich es verstanden

    wenn ich die formel von oben übernehme in die int BMI dann bekomme ich die Meldung "possible loss of precision" als meldung in der Zeile mit der Rechnung

    wie komme ich dennoch ans Ergebnis??

    Ich danke euch schon mal vielmals für eure Hilfestellungen


    EDIT: habs wegbekommen, der Fehler ist beseitigt, hab in den If Anfweisungen einfach das BMI durch die Gleichung ersetzt und es geht

    Nochmals Danke für eure Hilfe


  • wenn ich die formel von oben übernehme in die int BMI dann bekomme ich die Meldung "possible loss of precision" als meldung in der Zeile mit der Rechnung

    int kann ja nur ganze zahlen speichern, dh da würde gerundet werden, und das geht in dem fall nicht gut aus :)

    mit
    double BMI hätts vermutlich geklappt

  • habs wegbekommen, der Fehler ist beseitigt, hab in den If Anfweisungen einfach das BMI durch die Gleichung ersetzt und es geht

    Nochmals Danke für eure Hilfe

    Dir sollte aber klar sein, dass das sehr ineffizient und unschön ist. Weiters solltest du dich besser mit Fließkommazahlen bzw. Datentypen generell beschäftigen.
    Und die bereits beanstandeten Sachen würde ich auch mal überarbeiten.

    There's no better place than 127.0.0.1!

Jetzt mitmachen!

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