【发布时间】:2016-09-01 01:59:09
【问题描述】:
我的教授要求我们创建一个程序,该程序接收用户的身高和体重,然后计算 bmi。我决定更进一步,并添加一些“输入验证”逻辑。这意味着如果有人输入“猫”作为他们的体重,它会让用户知道“猫”不是有效的体重。
class MainClass
{
public static void Main ()
{
float userWeight;
float userHeight;
bool weight = true;
Console.Write ("Weight: ");
while (weight)
{
var inputWeight = (Console.ReadLine ());
if (!float.TryParse (inputWeight, out userWeight)) {
Console.WriteLine ("Invalid input");
Console.Write ("Please try again: ");
}
else
{
weight = false;
}
}
bool height = true;
Console.Write ("Height: ");
while (height)
{
var inputHeight = (Console.ReadLine ());
if (!float.TryParse (inputHeight, out userHeight)) {
Console.WriteLine ("Invalid input");
Console.Write ("Please try again: ");
}
else
{
height = false;
}
}
float bmiHeight = userHeight * userHeight; // error for userHeight
float bmi = userWeight / bmiHeight * 703; // error for userWeight
Console.WriteLine ("You BMI is " + bmi);
}
}
我得到的错误是“使用未分配的局部变量..”。我知道我在 IF 语句中分配用户变量,并且它们只会持续到该 IF 语句结束。
我的问题是,如何在 if 语句中分配一个变量,然后在该语句之外引用该变量的新值?
当然,我不必将它们全部嵌套,因为这看起来很乏味......
【问题讨论】:
标签: c# variables if-statement scope