Мой профессор попросил нас создать программу, которая учитывает высоту и вес пользователя, а затем вычисляет bmi. Я решил сделать это немного дальше и добавить в логику «проверки ввода». Это означает, что если кто-то вводит «кошку» для своего веса, он позволяет пользователю узнать, что «кошка» не является весом.Как ссылаться на переменную за пределами области видимости в C#
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, а затем ссылаться на новое значение этой переменной за пределами этой инструкции?
Конечно, я не должен вкладывать их все, потому что кажется утомительным ....
Это ложное утверждение, если вы действительно посмотрите на код. Хотя хорошее предложение инициализировать ценность в этом конкретном случае, нет необходимости, поскольку есть лучшие способы выразить одно и то же намерение с помощью другого кода. –
Yup верно, что на основе кода переменные будут в конечном итоге инициализированы, но компилятор недостаточно умен, чтобы понять это. И да, верно, что есть лучшие способы написания такого кода. – Lincoln
Настройка переменных userWeight и userHeight на 0! Благодаря! – Killzone