Java BMI计算器未打印结果
作为我CS学习的一部分,我们开始学习java,我想做一个小的辅助项目,尝试比我更精通java 到目前为止,它还没有发挥应有的作用 我编写了以下代码: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
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()
,但令人困惑吗?来吧。