并非所有代码路径都返回一个值?需要帮助

时间:2014-12-07 17:04:01

标签: c# console

我正在制作一个c#控制台游戏,我在尝试解决当前链接到静态int ResetGame()部分的错误时遇到了麻烦。显然并非所有代码路径都返回一个值。我该如何解决这个问题?

static int ResetGame()

{
    Console.WriteLine("Welcome to Tactical Space Cheese Racer");
    Console.WriteLine("");
    Console.WriteLine("Press any Key to continue");
    Console.ReadLine();
    Console.Clear();
    Console.WriteLine("Please enter the number of players that wish to play (2-4) : ");
    int NoOfPlayers = int.Parse(Console.ReadLine());
    Console.WriteLine("");

    for (int i = 0; i < NoOfPlayers; i++)
    {
        Console.WriteLine("");
        Console.WriteLine("Please enter the name of the player: " + i + i++);
        Console.WriteLine("");
        players[i].Name = Console.ReadLine();
        players[i].Pos = 0;
    }
}

如果您需要查看它以解决问题,我可以使用更多代码

1 个答案:

答案 0 :(得分:3)

您遇到的问题是您的方法应该返回int并且您不会返回它。

如果您不想返回任何内容,则应说明您的方法是void方法。

static void ResetGame()  
{

}

正如我可以从您的代码中得出结论,这可能是您的意图。因此,将您的方法设为void,您就不会有任何问题。

此外,我必须对你设定球员数量的方式做一个侧面说明。如果用户输入非integere值,您将得到一个您无法处理的异常。除此之外,如果用户输入的整数大于4,那就不行了。话虽如此,你应该注意上述两点。

int numberOfPlayers = -1;
Console.WriteLine("Please enter the number of players that wish to play (2-4) : ");

// The method Int32.TryParse parses the input and check if it 
// can be represented as a 32-bit integer number.
// If parse succeeds, then the value is assigned to numberOfPlayers 
// and the method returns true. Otherwise, it returns false.
while(!Int32.TryParse(Console.ReadLine()), out numberOfPlayers) && 
      !(numberOfPlayers>2 && numberOfPlayers<4))
{
    Console.WriteLine("Please enter a valid number between (2-4): ");
}

<强>更新

Idle_Mind在评论中指出了以下内容:

  

我想说他需要返回玩家数量。

如果是这种情况,你只需简单地在方法的结束大括号之前添加它:

return numberOfPlayers;

我想你会保留我的命名。如果您保留,只需将变量名称更改为您的名称。