использование неназначенной переменной для локальной переменной 'a'

1

Я использую непризнанную переменную для локальной переменной 'a'

namespace ConsoleApplication36
{
    class Program
    {
        static void Main(string[] args)
        {
            float Salary, a;
            Salary= 300;

            if (Salary <= 100)
            a = Salary * 0; // a = amount paid
            Console.WriteLine("He Pays " + a);

            if (Salary <= 200)
            a = Salary * 5 / 100;
            Console.WriteLine("He Pays " + a);

            if (Salary <= 500)
            a = Salary * 10 / 100;
            Console.WriteLine("He Pays " + a);

            if (Salary > 500)
            a= Salary*15/100;
            Console.WriteLine("He Pays " + a);
            Console.In.ReadLine();

    }
  }
}
  • 0
    достаточно написать float Salary, a = 0; в декларации
  • 0
    Это потому, что a присваивается только в операторе if . Хотя мы можем видеть, что в этом случае всегда вводится оператор if , иногда это не так, поэтому компилятор фактически помогает отлаживать наш код в более сложных ситуациях. Как сказал Милош, вы должны назначить до a 0 , когда она объявлена.
Теги:

4 ответа

-1
Лучший ответ

Вы должны назначить a переменную перед ее использованием. Изменить эту строку

float Salary, a;

к этому

float Salary, a = 0;

Ниже приведен полный модифицированный код

namespace ConsoleApplication36
{
    class Program
    {
        public static void Main()
        {
            float Salary, a = 0;
            Salary= 300;
            if (Salary <= 100)
                a = Salary * 0; // a = amount paid

            Console.WriteLine("He Pays " + a);

            if (Salary <= 200)
                a = Salary * 5 / 100;
            Console.WriteLine("He Pays " + a);

            if (Salary <= 500)
                a = Salary * 10 / 100;
            Console.WriteLine("He Pays " + a);

            if (Salary > 500)
                a = Salary*15/100;
            Console.WriteLine("He Pays " + a);
            Console.In.ReadLine();

        }
    }
}

Демо: https://dotnetfiddle.net/YeljrN

2

С вашим текущим синтаксисом вы будете переписывать свою переменную несколько раз в зависимости от значения зарплаты. Вы уверены, что хотите? Если нет, убедитесь, что вы делаете альтернативный расчет в разделе else:

namespace ConsoleApplication36
{
class Program
{
    static void Main(string[] args)
    {
        float Salary = 300;
        float a = 0;

        if (Salary <= 100)
        {
            a = Salary * 0; // a = amount paid
        }
        else if (Salary <= 200)
        {
            a = Salary * 5 / 100;
        }
        else if (Salary <= 500)
        {
            a = Salary * 10 / 100;
        }
        else
        {
            a = Salary*15/100;
        }

        Console.WriteLine("He Pays " + a);
        Console.In.ReadLine();

    }
}
}
0

Лучше объявить их отдельно, поскольку вы новичок в С#

плавающая зарплата; float a = 0;

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

-1

Установите начальное значение равным 0

namespace ConsoleApplication36
{ 
    class Program { 
    static void Main(string[] args) { 
    float Salary, a = 0; Salary= 300; if (Salary <= 100)

                    a = Salary * 0; // a = amount paid

                Console.WriteLine("He Pays " + a);

                if (Salary <= 200)
                    a = Salary * 5 / 100;
                Console.WriteLine("He Pays " + a);

                if (Salary <= 500)
                    a = Salary * 10 / 100;
                Console.WriteLine("He Pays " + a);

                    if (Salary > 500)
                        a= Salary*15/100;
                    Console.WriteLine("He Pays " + a);
                    Console.In.ReadLine();


            }
        }
        }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню