【问题标题】:C# value is always 0 console applicationC# 值始终为 0 控制台应用程序
【发布时间】:2014-04-30 13:52:52
【问题描述】:

我不知道为什么我的 BMI 值总是 = 到 0。我正在编程菜鸟我错过了什么?除此之外,我的 if 语句好吗?我错过了什么?

    static void Main(string[] args) {
        double WeightKg = 0.0, HeightCm = 0.0, Weightlbs = 0.0, WeightOz = 0.0, BMI = 0.0, Feet = 0.0, Inches = 0.0;
        int BMIOption;
        string AnotherConversion;

        string BMIMenu = ("Which Measurement You Want to use to enter the weight and height?"
                        + "\n1)Enter 1 for Metric"
                        + "\n2)Enter 2 for British Imperial:");
        Console.Write(BMIMenu);
        BMIOption = int.Parse(Console.ReadLine());

        if (BMIOption == 1) {
            Console.Write("\nPlease Enter your Weight in Kilogram (kg):");
            WeightKg = int.Parse(Console.ReadLine());
            Console.Write("\nPlease Enter your Height in in centimetres (cm):");
            HeightCm = int.Parse(Console.ReadLine());

            BMI = WeightKg / (HeightCm * HeightCm);

            if (BMI >= 35) {
                Console.WriteLine("\nYour BMI is {0:C},Severe Obesity", BMI);
            } else if (BMI >= 30) {
                Console.WriteLine("\nYour BMI is {0:C},Obese", BMI);
            } else if (BMI >= 25) {
                Console.WriteLine("\nYour BMI is {0:C},OverWeight", BMI);
            } else if (BMI >= 18.5) {
                Console.WriteLine("\nYour BMI is {0:C},Healthy BodyWeight", BMI);
            } else if (BMI <= 18.5) {
                Console.WriteLine("\nYour BMI is {0:C},UnderWeight", BMI);
            }//End if

            Console.Write("\nWould you like to make an another conversion? \n\n(Enter Y to make an another conversion/Enter any other key to exit):");

            Console.ReadKey();

【问题讨论】:

  • WeightKgHeightCm 的值是多少?
  • 嗨,菜鸟。现在是学习如何使用调试器的时候了,在你编写另一行代码之前:)
  • 当您的值显然是浮点双精度时,为什么要使用 int.Parse?
  • 欢呼伙计们寻求帮助。我明白了

标签: c# console-application calculator


【解决方案1】:

BMI 是用米计算的,而不是厘米。所以你需要将HeightCm 转换为HeightM。如果你不这样做,你会得到非常小的数字,然后打印为 0。

double HeightM = HeightCm / 100.0;
BMI = WeightKg / (HeightM * HeightM);

另外,在解析时,使用double.Parse 而不是int.Parse。现在的方式,你只会解析没有小数部分的数字。

【讨论】:

    【解决方案2】:

    在这一行:

    BMI = WeightKg / (HeightCm * HeightCm);
    

    结果最终非常小(小于 1)。举个例子,WeightKg 是 55,HeightCm 是 165。结果大约是 0.002。

    当您将其显示为{0:C} 时,它显示为零。使用{0:G}查看实际值。

    【讨论】:

      【解决方案3】:

      即使你的公式是错误的,正如 Martin 所说,你必须用 double AND 替换 int.Parse

      BMI = WeightKg / ((HeightCm/100) * (HeightCm/100));
      

      用它来计算它的高度,以米为单位:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多