程序执行时有错误的解决方案,

时间:2016-10-03 22:42:19

标签: c#

我一直在为我的班级制作一个两级BMI计算器。我终于设法调试得到程序执行。但是我注意到它不会让我输入高度或重量作为小数。

实施例

将6.4放入高度会导致其崩溃

6个身高和220个体重似乎总是声明体重不足并显示不正确的bmi阅读

示例:

身高6

重量220

BMI:得分$ 0.09

计算BMI是错误的。看看代码,我似乎无法确定为什么计算这个错误。

-Edit-管理让它取小数! (谢谢大家!)然而,它似乎仍在搞乱计算BMI

-Edit- Code Works!

(代码第1部分)更新了Mk2

using System;

namespace Calculator
{

public class BMICalc
{
    private const
        decimal REQ = 703;
    private decimal weightPerson;
    private decimal heightPerson;

    public BMICalc()
    {

    }
    public BMICalc(decimal weiP, decimal heiP)
    {
        this.weightPerson = weiP;
        this.heightPerson = heiP;

    }

    public decimal SetBmi()
    {
        decimal bmi;
        bmi = Convert.ToDecimal((this.weightPerson * 0.45m) / ((this.heightPerson * 12 * 0.025m) * (this.heightPerson * 12 * 0.025m)));

        if (bmi < 18.5m)

        {
            Console.WriteLine("UnderWeight");
            Console.ReadLine();
        }
        if (bmi > 18.5m && bmi < 25.0m)
        {
            Console.WriteLine("Normal");
            Console.ReadLine();
        }
        if (bmi > 25.0m && bmi < 29.9m)
        {
            Console.WriteLine("OverWeight");
            Console.ReadLine();
        }
        if (bmi > 29.9m && bmi < 40.0m)
        {
            Console.WriteLine("Obese");
            Console.ReadLine();
        }

        return bmi;
    }

    public override string ToString()
    {
        return "\tCalculator" +
            "\n\n Weight:" + this.weightPerson +
            "\n\n Height:" + this.heightPerson +
            "\n\n BMI Score:" + SetBmi().ToString();


    }
}
}

代码(第2部分)更新了Mk 2

   namespace Calculator
{
public class App
{
    public static void Main() // 
    {
        decimal heiP, weiP;

        heiP = InputHeight();

        weiP = InputWeight();



        BMICalc bmiCal = new BMICalc(weiP, heiP);

        Console.Clear();
        Console.WriteLine(bmiCal.ToString());
        Console.ReadKey();
    }
    public static decimal InputHeight()
    {
        decimal hNumber;

        Console.Write("Please enter your height: ");
        hNumber = Convert.ToDecimal(Console.ReadLine());
        return hNumber;
    }

    public static decimal InputWeight()
    {
        Decimal wNumber;

        Console.Write("Please enter your weight: ");

        wNumber = Convert.ToDecimal(Console.ReadLine());
        return wNumber;
    }


}
}

1 个答案:

答案 0 :(得分:0)

你输入参数到构造函数期望权重(weiP),身高(heiP)(按此顺序)你传递身高,体重来自BMICalc bmiCal = new BMICalc(heiP,weiP);

这就是输出值不正确的原因。交换参数,应该没问题。

修改

由于您输入的是Lbs的重量和以英尺为单位的高度,您需要将英尺转换为英寸(乘以12),然后将高度和重量乘以转换指标。

所以公式是:

bmi = Convert.ToDecimal((this.weightPerson * 0.45) / ((this.heightPerson * 12 * 0.025) * (this.heightPerson * 12 * 0.025)));

货币在使用ToString()重写方法时会进入。那里指定的格式是货币。