Java BMI计算器未打印结果

Java BMI计算器未打印结果,java,Java,作为我CS学习的一部分,我们开始学习java,我想做一个小的辅助项目,尝试比我更精通java 到目前为止,它还没有发挥应有的作用 我编写了以下代码: import java.util.Scanner; public class BodyWeightCalculator { public static void main(String[] args) { double weight; double height; Scanner input = new Scanner

作为我CS学习的一部分,我们开始学习java,我想做一个小的辅助项目,尝试比我更精通java

到目前为止,它还没有发挥应有的作用

我编写了以下代码:

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");
    }
}
}
import java.util.Scanner;
公共类体重计算器{
公共静态void main(字符串[]args){
双倍重量;
双高;
扫描仪输入=新扫描仪(System.in);
System.out.print(“你的身高是多少米?”);
高度=输入.nextDouble();
系统输出打印(“你的体重是多少公斤?”);
权重=输入。nextDouble();
双倍体重指数=((体重/身高)/身高);
System.out.printf(“您的体重指数为”+BMI);
如果(体重指数<18.5)
System.out.println(“你的体重指数为“+BMI+”,你体重不足。”);
其他条件(体重指数24.9)
println(“你的体重指数为“+BMI+”,你的体重正常。”);
否则如果(bmi<25和bmi>29.9)
System.out.println(“您的体重指数为“+BMI+”,您超重”);
否则,如果(体重指数>30){
System.out.println(“你的体重指数为“+BMI+”,你极度超重”);
}
}
}
该程序要求用户输入他/她的体重和身高,然后输出用户的BMI以及他/她是正常体重还是体重不足等

程序仅输出BMI,忽略所有
if-else
语句


这有什么问题吗?

您的if语句似乎没有涵盖您想要的范围。此外,您应该使用“&&”表示“和”,而不是“&”,这有点明智。您还应该养成习惯,总是为if语句块使用大括号,即使该语句块只有一行

你应该像这样重写你的陈述:

    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);
    }
if(体重指数<18.5){
System.out.println(“你的体重指数为“+BMI+”,你体重不足。”);
}

else-if(18.5您在
if-else
语句集中有问题,它应该覆盖整个范围。您应该使用
布尔
运算符“&&&”,而不是使用
位运算符
'&'

 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"); 
}
if(体重指数<18.5)
System.out.println(“你的体重指数为“+BMI+”,你体重不足。”);
否则,如果(体重指数>=18.5&&bmi=25&&bmi=30){
System.out.println(“你的体重指数为“+BMI+”,你极度超重”);
}

检查您的
是否符合
条件。
bmi 24.9
永远不会为真。请使用
&&
(逻辑And)而不是
&
(按位And)。这取决于您测试它时使用的输入。您可能会发现您的条件没有涵盖这一点(它返回给我的bmi,呵呵)。另外,检查其他注释。首先,你的公式是错误的…检查这个公式我喜欢这个“辅助项目”是编程中最常见的家庭作业之一。“此外,你应该使用“&&”for”和“而不是”&”,这是一个有点明智的“和”你不应该把不正确的评论复制到你的答案中;P.@Tom:我没有复制任何人的评论。我使用的是我15年以上Java软件工程的常识。如果你使用位智能“&”在if语句中,您应该真正在位级别进行操作。如果您使用&in代替&everywhere,那么您只会混淆您自己、您的软件测试人员以及继承您代码的人。“如果你正在使用&in-in-in代替&everywhere,那么你只会混淆你自己、你的软件测试人员以及继承你的代码的人。”然后他们应该搜索不同的工作。
&&&
&
,它只是短路。它可能会导致问题,如
x==null | x.isEmpty()
,但令人困惑吗?来吧。