Ошбика not all code paths return a value в коде
Написал код, который должен сравнить цену при вводе пользователем с ценой в 10000, если цена больше либо равна 10000 то должна выводиться сумма с учетом скидки. Если цена меньше то она и должна выводиться.
Скажите где ошибка?
static void Main(string[] args)
{
int totalPrice = Convert.ToInt32(Console.ReadLine());
Discount(totalPrice);
}
static int Discount(int Price)
{
if(Price >= 10000)
{
Console.WriteLine(0.2 * Price);
}
else
{
Console.WriteLine(Price);
}
}
Ответы (2 шт):
static void Main(string[] args)
{
int totalPrice = Convert.ToInt32(Console.ReadLine());
Discount(totalPrice);
}
static void Discount(int Price)
{
if(Price >= 10000)
{
Console.WriteLine(0.2 * Price);
}
else
{
Console.WriteLine(Price);
}
}
Метод имеющий [тип возвращаемого значения int] обязательно должен вернуть целое число. У вас он ничего не возвращает. https://metanit.com/sharp/tutorial/2.8.php
Ошибка "not all code paths return a value" переводится как "не все пути кода возвращают значение". Что это значит? Сначала разберём, как нужно описывать методы в программе. Вот стандартная схема описания метода:
accessMod [static] returnType methodName(
arg1Type arg1Name, arg2Type arg2Name, ...)
Обратите внимание на returnType. Если ваш метод должен просто делать какую-то работу, и не должен возвращать результата своей работы, нужно использовать void. Вот пример:
static void PrintSomething()
{
Console.WriteLine("Something");
}
Этот метод просто выводит что-то в консоль и не больше того. Если у вас код, должен что-то считать (для примера), тогда нужно указать, что метод должен возвращать тип данных результата своей работы. Следующий пример:
static int Sum()
{
return 2 + 2;
}
Обратите внимание, что для таких методов обязательное наличие ключевого слова return, иначе, вы получите ошибку "not all code paths return a value" (как в вашем случае).
Так же вы можете передавать параметры в такой метод:
static int Sum(int first, int second)
{
return first + second;
}
Для решения конкретно вашей проблемы, вам нужно указать, что ваш метод должен возвращать void:
static void Discount(int Price)
{
if(Price >= 10000)
{
Console.WriteLine(0.2 * Price);
}
else
{
Console.WriteLine(Price);
}
}
Если вы хотите, что бы ваш метод ещё и возвращал результат своей работы, измените код следующим образом:
static float Discount(int Price)
{
float result = Price;
if(Price >= 10000)
{
result = 0.2 * Price
}
Console.WriteLine(result);
return result;
}
И в методе Main:
static void Main(string[] args)
{
int totalPrice = Convert.ToInt32(Console.ReadLine());
float discount = Discount(totalPrice);
}
Так же обратите внимание на соответствие типов данных float в методе Discount.