Невозможно вывести число

191
31 декабря 2018, 14:00

В данном ниже коде в строке Console.WriteLine("{0}", U); U (по словам компилятора) - локальная переменная, которой не присвоено значение, хотя она была инициализирована до этого. В чем причина ошибки и как ее исправить?

Полный код:

static void Main(string[] args)
{
    double x, y, U;
    x = Double.Parse(Console.ReadLine());
    y = Double.Parse(Console.ReadLine());
    if (x >= -2 && x <= 2)
    {
        if (y >= -2 && y <= 2)
            U = Math.Sqrt(Math.Abs(x * y));
    }
    else
        U = Math.Abs(Math.Pow(x, 2) - Math.Pow(y, 3));
    Console.WriteLine("{0}", U);
    Console.ReadKey();
Answer 1

Проблема вот в чём: когда вы объявляете переменную типа int ей присваиваеться значение default а точнее 0. И когда вы это делаете неявно компилятор думает что вы упустили этот момент с объявлением переменной. Возникнет вопрос

"А я же в условной конструкции присваиваю значение что ни так?" Я отвечу:

Когда вы делаете условную конструкцию вы используете булеву переменную как ни как и она может быть как и истиной (true) так и ложной (false). И если все же она вернет true тогда выполниться присваивание. А если нет?? Получается что переменная U так и останется не присвоенным явно значением? Так что сделайте просто так:

static void Main(string[] args)
{
    double x, y, U;
    x = double.Parse(Console.ReadLine());
    y = double.Parse(Console.ReadLine());
    if (x >= -2 && x <= 2)
    {
        if (y >= -2 && y <= 2)
            U = Math.Sqrt(Math.Abs(x * y));
        else
            U = 0; //if false U will be zero. 
    }
    else
        U = Math.Abs(Math.Pow(x, 2) - Math.Pow(y, 3));
    Console.WriteLine($"{U}");
    Console.ReadKey();
}

Да, также вы можете дать начальное значение переменной что бы в случае что блок с условием не сработает оно не измениться. Но я просто дал пояснение на примере

А почему так??

SeeSharp

Answer 2

Задайте начальное значение переменной U,она в любом случае потом поменяет свое значение,а так там мусор мб какой-нибудь лежит:

double x, y, U = 0;
READ ALSO
Как закрыть главную форму при открытии дочерней?

Как закрыть главную форму при открытии дочерней?

Обработчик кнопки главной формы которая открывает дочернее окно

289
Чтение xml файла в приложении winform(C#)

Чтение xml файла в приложении winform(C#)

Необходимо считать данные с xml файла

187
Не отправляется файл ajax запросом

Не отправляется файл ajax запросом

Очень странная ситуацияКогда запускаю проект в студии, выбираю файл в форме он отправляется и возвращает нужные мне данные

204
xamarin.forms mscorlib конфликт зависимости

xamarin.forms mscorlib конфликт зависимости

Собрал проект, всё хорошоЗапускаю андроид приложение и выводится такая ошибка

298