2016-10-26 3 views
-1

Als Teil meiner CS-Studien fangen wir an, Java zu lernen, und ich wollte ein kleines Nebenprojekt machen, um besser in Java zu werden, als ich es bin.BMI-Rechner keine Druckergebnisse

Bis jetzt funktioniert es nicht wie es sollte.

Ich habe diesen Code geschrieben:

import java.util.Scanner; 

public class BodyWeightCalculator { 

public static void main(String[] args) { 
    double weight; 
    double height; 

    Scanner input = new Scanner(System.in); 

    System.out.print("What's your height in meters?"); 
    height = input.nextDouble(); 
    System.out.print("What's your weight in kilograms?"); 
    weight = input.nextDouble(); 

    double bmi = ((weight/height)/height); 

    System.out.printf("Your BMI is " + bmi); 

    if (bmi < 18.5) 
     System.out.println("Your BMI is " + bmi + ", you are underweight."); 
    else if (bmi <= 18.5 & bmi > 24.9) 
     System.out.println("Your BMI is " + bmi + ", you are at a normal weight."); 
    else if (bmi < 25 & bmi > 29.9) 
     System.out.println("Your BMI is " + bmi + ", you are overweight"); 
    else if (bmi > 30) { 
     System.out.println("Your BMI is " + bmi + ", you are extremely overweight"); 
    } 
} 
} 

Dieses Programm fordert den Benutzer zur Eingabe seiner/ihrer Größe und Gewicht, und dann gibt es die BMI des Benutzers und ob er/sie ist mit normalem Gewicht, oder Untergewicht usw.

Das Programm gibt nur den BMI aus, wobei alle if-else-Anweisungen ignoriert werden.

Irgendetwas stimmt nicht damit?

+3

Überprüfen Sie Ihre 'if'-Bedingungen. 'bmi <= 18.5 & bmi> 24.9 'wird niemals wahr sein. – resueman

+3

Und verwenden Sie '&&' (logisch und) anstelle von '&' (bitweise und). – Kayaman

+0

Es liegt an der Eingabe, mit der Sie es testen. Möglicherweise finden Sie ein Szenario, wo Ihre Bedingungen das nicht abdecken (es gibt für meine bmi, heh). Überprüfen Sie auch die anderen Kommentare. – Alfabravo

Antwort

0

Ihre if-Anweisungen scheinen nicht die Bereiche abzudecken, die Sie beabsichtigen. Außerdem sollten Sie "& &" für "und" statt "&" verwenden, was ein bisschen "und" ist. Sie sollten sich auch angewöhnen, für if-Anweisungen immer geschweifte Klammern zu verwenden, selbst wenn der Block eine Zeile lang ist.

Sie sollten Ihre Aussagen umschreiben wie folgt:

if (bmi < 18.5) { 
     System.out.println("Your BMI is " + bmi + ", you are underweight."); 
    } 
    else if (18.5 <= bmi && bmi < 25.0) { 
     System.out.println("Your BMI is " + bmi + ", you are at a normal weight."); 
    } 
    else if (25.0 <= bmi && bmi < 30.0) { 
     System.out.println("Your BMI is " + bmi + ", you are overweight"); 
    } 
    else if (30.0 <= bmi) { 
     System.out.println("Your BMI is " + bmi + ", you are extremely overweight"); 
    } 
    else { 
     throw new RuntimeException("Should not be reached. BMI=" + bmi); 
    } 
+0

* "Weiter sollten Sie" && "für" und "anstatt" & "verwenden, was ein bisschen ist" und "" * Sie sollten keine falschen Kommentare in Ihre Antwort kopieren; – Tom

+0

@Tom: Ich habe keine Kommentare kopiert. Ich benutze meinen gesunden Menschenverstand aus mehr als 15 Jahren Java Software Engineering. Wenn Sie bitweise "&" in einer if-Anweisung verwenden, sollten Sie wirklich auf der Bit-Ebene arbeiten. Wenn Sie && überall verwenden, dann verwirren Sie sich selbst, Ihre Software-Tester und jeden, der Ihren Code erbt. – stackoverflowuser2010

+0

* "Wenn Sie && überall verwenden, dann verwirren Sie sich selbst, Ihre Softwaretester und wer auch immer Ihren Code erbt." * Dann sollten sie einen anderen Job suchen. '&&' tut dasselbe wie '&', es ist nur kurzgeschlossen. Dies kann zu Problemen wie in 'x == null | führen x.isEmpty() ', aber verwirrend? Komm schon. – Tom

1

Sie haben ein Problem in dem Satz von if-else Aussagen, sollte es die ganzen Bereiche abdecken. Und Sie sollten den boolean Operator '& &' anstelle der bitwise-operator '&' verwenden.

if (bmi < 18.5) 
    System.out.println("Your BMI is " + bmi + ", you are underweight."); 
else if (bmi >= 18.5 && bmi <= 24.9) 
    System.out.println("Your BMI is " + bmi + ", you are at a normal weight."); 
else if (bmi >= 25 && bmi <= 29.9) 
    System.out.println("Your BMI is " + bmi + ", you are overweight"); 
else if (bmi >= 30.) { 
    System.out.println("Your BMI is " + bmi + ", you are extremely overweight"); 
} 
Verwandte Themen