gpt4 book ai didi

java - 如果没有按预期工作

转载 作者:行者123 更新时间:2023-12-02 13:35:38 24 4
gpt4 key购买 nike

不会显示“您体重正常”和“您体重超标”。我的代码:

  import java.util.Scanner;
public class BodyMassIndex
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
double bmi, weight, height;

System.out.println("----LETS CHECK YOUR BMI----");
System.out.print("Enter your weight (kg): ");
weight = scan.nextDouble();
System.out.print("Enter your height (m): ");
height = scan.nextDouble();
System.out.println("-----------RESULTS----------");
bmi = weight/(height*height);
System.out.printf("%-10s%-4.2f" , "\t\t Your BMI is " , bmi);
if(bmi<18.5)
{System.out.println("\n\t\t You are UNDERWIGHT");}
else if(bmi==18.5 && bmi <= 24.9)
{System.out.println(" You are NORMAL WEIGHT");}
else if(bmi==25 && bmi <= 29.9)
{System.out.println(" You are OVERWEIGHT");}
else if(bmi > 30)
{System.out.println("\n\t\t You are OBESE");}
else
{}
}
}

最佳答案

尤瑟夫对于这一变化的看法是正确的。不过,我认为了解自己的逻辑在做什么以及为什么不起作用很重要。

所以让我们继续看一下第一个 else if 语句,因为相同的解释涵盖了这两个错误。

否则 if(bmi==18.5 && bmi <= 24.9)

所以在这里,您正在寻找 bmi 介于 18.5 和 24.9 之间的情况。使用条件语句中的 &&,您需要两个语句都为 true 才能通过检查(按说法)并触发打印语句。

让我们看两种情况:

1) 体重指数 = 18.5

First, fact check: is bmi between 18.5 and 24.9? Yes.

Now, your code's logic:

bmi == 18.5? True
bmi <= 24.9? True

在这种情况下,两者都通过了。然而,这对任何之间的数字都有效吗? 18.5 和 24.9?我们再做一个案例

2) 体重指数 = 20.0

First, fact check: is bmi between 18.5 and 24.9? Yes.

Now, your code's logic:

bmi == 18.5? False
bmi <= 24.9? True

在这种情况下,它会失败,因为 bmi 不是 18.5。因此,对于任何不是 18.5 但介于 18.5 和 24.9 之间的 bmi,检查都​​会失败。

希望能够澄清原因!

编辑:

AntonH 提出了一个我未能遗漏的重要观点。

You may also want to explain why bmi <= 24.9 is bad, and bmi < 25 is better (because the whole thing comes down if bmi == 24.95).

因此,正如他所说,使用 bmi < 25 可以让您的应用程序正确评估更精确的 bmi 值(即更多小数点),例如 AntonH 使用的 bmi 为 24.95 的情况。

关于java - 如果没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43012507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com