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
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Von Bis Befehl

  • elomaniak
  • 17. November 2008 um 13:18
  • Unerledigt
  • elomaniak
    3
    elomaniak
    Mitglied
    Punkte
    40
    Beiträge
    6
    • 17. November 2008 um 13:18
    • #1

    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

  • Ringding
    11
    Ringding
    Mitglied
    Reaktionen
    12
    Punkte
    1.237
    Beiträge
    244
    • 17. November 2008 um 15:10
    • #2

    So wie es dasteht, macht es genau das, was es soll.

  • Christoph R.
    16
    Christoph R.
    Mitglied
    Reaktionen
    36
    Punkte
    2.626
    Beiträge
    428
    • 17. November 2008 um 15:30
    • #3

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

  • elomaniak
    3
    elomaniak
    Mitglied
    Punkte
    40
    Beiträge
    6
    • 17. November 2008 um 16:08
    • #4
    Zitat von Christoph R.

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

    so sieht mein code aus

    Java
    import java.util.Scanner;
    import java.io.PrintStream;
    import java.math.*;
    
    
    public class Eliza
    {
    
    
    
        public static void main(String[] args){
            for (int i=0; i<25; i++){ System.out.println(); }
    
    
            PrintStream aus = System.out;
            Scanner eingabe = new Scanner(System.in);
    
            aus.print("Hallo, ich bin Eliza. ");
            aus.println("Ich wurde programmiert um mit Dir ein Gespräch zu führen.");
            aus.println("Wie heisst Du?");
            String name = eingabe.next();
            aus.println("Hallo " + name );
            aus.println("Wie alt bist Du?");
            int alter = eingabe.nextInt();
            aus.println("Wieviel kg wiegst Du?");
            int gewicht = eingabe.nextInt();
            aus.println("Wie gross bist Du? (Bitte in cm angeben)");
            int groesse = eingabe.nextInt();
            aus.println("Dein BMI beträgt: " + ((gewicht) / ((groesse / 100.00)*(groesse / 100.00))));
            int BMI = (gewicht) / ((groesse / 100)*(groesse / 100));
            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.");
    
            System.exit(0);
    
    
    
    
    
        }
    
    
    }
    Alles anzeigen

    weiss jetzt auch nicht wo der wurm drin ist

  • Ringding
    11
    Ringding
    Mitglied
    Reaktionen
    12
    Punkte
    1.237
    Beiträge
    244
    • 17. November 2008 um 16:40
    • #5

    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.

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 17. November 2008 um 16:46
    • #6
    Zitat von elomaniak

    for (int i=0; i<25; i++){ System.out.println(); }


    Das ist jetzt nicht das funktionale Problem, das du suchst, aber... pfui! Darf ich bitte selber bestimmen, was auf meinem Bildschirm steht? Vielleicht brauche ich es ja noch? (Im Uebrigen haben meine Terminals 40 Zeilen.)

    *plantsch*

  • java-girl
    14
    java-girl
    Mitglied
    Reaktionen
    7
    Punkte
    2.037
    Beiträge
    357
    • 17. November 2008 um 17:10
    • #7
    Zitat von elomaniak
    Code
    System.exit(0);

    ???

    There's no better place than 127.0.0.1!

  • elomaniak
    3
    elomaniak
    Mitglied
    Punkte
    40
    Beiträge
    6
    • 17. November 2008 um 17:55
    • #8
    Zitat von Ringding

    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

  • Ringding
    11
    Ringding
    Mitglied
    Reaktionen
    12
    Punkte
    1.237
    Beiträge
    244
    • 17. November 2008 um 18:06
    • #9

    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)

  • elomaniak
    3
    elomaniak
    Mitglied
    Punkte
    40
    Beiträge
    6
    • 17. November 2008 um 19:42
    • #10

    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.

  • java-girl
    14
    java-girl
    Mitglied
    Reaktionen
    7
    Punkte
    2.037
    Beiträge
    357
    • 17. November 2008 um 19:44
    • #11
    Zitat von elomaniak

    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!

  • davide
    23
    davide
    Mitglied
    Reaktionen
    110
    Punkte
    5.660
    Beiträge
    1.048
    • 17. November 2008 um 20:29
    • #12

    soll heißen, schreib mal vor den if abfragen ein "aus.out.println("Berechneter BMI: " +BMI);" und vergleich den wert mit der vorigen ausgabe :)

    (ich glaub nämlich nicht dass ich einen bmi von 94 haben sollte :winking_face: die 27 kommen da schon eher hin :face_with_tongue: )

    Sich berühren ist wie Afrika, fremd und kalt.

    http://www.penisland.net

    http://runtastic.com/

    Einmal editiert, zuletzt von davide (17. November 2008 um 20:32)

  • elomaniak
    3
    elomaniak
    Mitglied
    Punkte
    40
    Beiträge
    6
    • 17. November 2008 um 20:55
    • #13

    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

  • davide
    23
    davide
    Mitglied
    Reaktionen
    110
    Punkte
    5.660
    Beiträge
    1.048
    • 17. November 2008 um 21:01
    • #14
    Zitat von elomaniak


    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

    Sich berühren ist wie Afrika, fremd und kalt.

    http://www.penisland.net

    http://runtastic.com/

  • java-girl
    14
    java-girl
    Mitglied
    Reaktionen
    7
    Punkte
    2.037
    Beiträge
    357
    • 17. November 2008 um 21:01
    • #15
    Zitat von elomaniak

    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!

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    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

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern