Все пути не возвращают значение - PullRequest
0 голосов
/ 16 марта 2020

Я не уверен, что именно не так с моим кодом, потому что он работал раньше, но теперь он показывает мне эту ошибку.

main.cs (179,20): ошибка CS0161: ` CarProgram.ChangeGears (int, string) ': не все пути кода возвращают значение

Программа предназначена для автомобильных функций, например, для симулятора, но я хочу получить эту первую ошибку из путь, прежде чем перейти к остальным.

Вот код

private static int ChangeGears(int s, string g)
{
     Console.WriteLine("Inside the function Change Gears");
     if (s == 0)
     {
      string haveGear;
     Console.WriteLine("What gear would you like to have?");
     haveGear = Console.ReadLine();
     haveGear = haveGear.ToUpper();
     if (haveGear == "P" || haveGear == "R" || haveGear == "N" || haveGear == "D")
        {
            switch (haveGear)
            {
                case "P":
                {
                    Console.WriteLine("You are in park");
                    break;
                }

                case "N":
                {
                    Console.WriteLine("You are in neutral");
                    break;
                }

                case "D":
                {
                    Console.WriteLine("You are in drive");
                    break;
                }

                case "R":
                {
                    Console.WriteLine("You are in reverse");
                    break;
                }
            }//close
            g = haveGear;
        }
     else
     {
         Console.WriteLine("The speed must be 0 to change gears.");
     }
     Console.WriteLine("Gear is "+ g);

     return 0;
}
}// close ChangeGears

Ответы [ 2 ]

3 голосов
/ 16 марта 2020

Пожалуйста, отформатируйте вашу рутину,

private static int ChangeGears(int s, string g) {
  Console.WriteLine("Inside the function Change Gears");

  if (s == 0) {
    ...
    /* Some logic here */
    ... 
    return 0; // <- when s == 0 ChangeGears returns 0
  }

  //TODO: return value when s != 0
}// close ChangeGears

А вы ясно видите, что ChangeGears ничего не возвращает когда s != 0

0 голосов
/ 16 марта 2020

Это метод ChangeGears:

Вы говорите:

if(condition)
{
  // Do Stuff
  return 0;
}
// Here is implicitly:
if (not Condition)
{
  //Do nothing
}

Остальное также требует возврата.

Кроме того, сообщение об ошибке дает вам информацию тебе нужно.

main.cs (179,20): ошибка CS0161

Указывает, что строка 179 - это метод с проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...