Я использую непризнанную переменную для локальной переменной '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();
}
}
}
Вы должны назначить 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();
}
}
}
С вашим текущим синтаксисом вы будете переписывать свою переменную несколько раз в зависимости от значения зарплаты. Вы уверены, что хотите? Если нет, убедитесь, что вы делаете альтернативный расчет в разделе 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();
}
}
}
Лучше объявить их отдельно, поскольку вы новичок в С#
плавающая зарплата; float a = 0;
Ошибка заключается в том, что CLR достаточно умен, чтобы проверить путь, который занимает код, прежде чем использовать конкретную локальную переменную, и если вы можете получить там без назначения значения, которое он будет жаловаться.
Установите начальное значение равным 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();
}
}
}
a
присваивается только в оператореif
. Хотя мы можем видеть, что в этом случае всегда вводится операторif
, иногда это не так, поэтому компилятор фактически помогает отлаживать наш код в более сложных ситуациях. Как сказал Милош, вы должны назначить доa
0
, когда она объявлена.