我一直在为我的班级制作一个两级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;
}
}
}
答案 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()重写方法时会进入。那里指定的格式是货币。