QuantumNova Ответов: 3

Как исправить ошибку "не все пути кода возвращают значение"?


Здравствуйте друзья,
Я пытаюсь написать некоторый код, который способен считать как вверх, так и вниз, от числа а до числа в с несколькими параметрами. Но появляется ошибка "ошибка компиляции (строка 9, col 20): 'Program.count(int, int)': не все пути кода возвращают значение", я знаю, что это как-то связано с необходимостью поместить "return" в места, но я понятия не имею, где, и я просто не могу исправить эту ошибку. Пожалуйста, помогите, любая помощь будет очень признательна.

Что я уже пробовал:

using System;
					
public class Program
{
	public static void Main()
	{
		count(3, 10);
	}
	public static int count(int a, int b)
	{
		var number = 0;
		if (a < b) {
			while (a < b) {
				Console.WriteLine(number);
				number = number + 1;
			}
		}
		else {
			while (a > b) {
				Console.WriteLine(number);
				number = number - 1;
		  }		
	   }
	} 
}

3 Ответов

Рейтинг:
28

OriginalGriff

Сообщение об ошибке означает именно то, что оно говорит: существует по крайней мере один маршрут через ваш метод, который не возвращает значение вызывающему объекту.
В этом случае нет никакого маршрута через ваш метод, который действительно возвращает значение!

Добавьте эту строку в конце метода:

return number;


Рейтинг:
2

Patrice T

Цитата:
Я знаю, что это как-то связано с необходимостью поместить "возвращение" в те места, но я понятия не имею, где именно

Посмотрите на свой код, откуда вы знаете ответ ?
Возврат происходит после этой точки и до конца функции.
Совет: попробуйте разные решения и посмотрите, какое из них работает, а какое нет. Эта попытка называется "обучение методом проб и ошибок".

Измените main, чтобы получить ответ и отобразить его:
public static void Main()
{
    int result= count(3, 10);
    Console.WriteLine("Result is ");
    Console.WriteLine(result);
}


Рейтинг:
1

Member 13566383

Есть две альтернативы вашей проблеме:
Если вы хотите напечатать свой результат только так, как вы это делаете со строками

Console.WriteLine(number);

нет никакой необходимости в том, чтобы ваш метод возвращал значение. В этом случае вам следует изменить тип вашего метода на
public static void count(int a, int b)

Если вам нужен результат, где вы вызываете метод, OriginalGriff дал вам решение.