如何实现调用自身的方法?

时间:2012-07-10 17:33:27

标签: c# recursion loops

我的手腕受到了打击,因为在一项任务中,当输入错误发生时,我自己有一个方法调用。我不知道如何使用或使用什么而不是我写的代码。我需要帮助才能找到正确的方法。

我喜欢编码所以我只需要以正确的方式轻推! :)

我写的代码看起来像这样。

 private void SumTheNumbers()
 {
 Console.Write("Please give the value no "+ index + " :");
        if (false == int.TryParse(Console.ReadLine(), out num))
        { 
            //Errormessage if the user did not input an integer.
            Console.WriteLine("Your input is not valid, please try again.");
            Console.WriteLine();
            sum = 0;
            SumTheNumbers();
        }
        else
        {
            //Calculate the numbers given by user
            sum += num;
        }
  }

3 个答案:

答案 0 :(得分:8)

就我个人而言,我有点像那种风格,但 效率低(如果用户输入无效输入很多次,可能会导致堆栈溢出)。您的教师可能希望您使用while循环:

Console.Write("Please give the value no "+ index + " :");
while (false == int.TryParse(Console.ReadLine(), out num))
{ 
    //Errormessage if the user did not input an integer.
    Console.WriteLine("Your input is not valid, please try again.");
    Console.WriteLine();
    sum = 0;
}

//Calculate the numbers given by user
sum += num;

顺便说一下,false ==位非常非惯用,会引起大多数团队的注意(作为旁注:如果你的导师建议你写这个,他/她可能来自不同的语言背景,以防止意外分配;相信我,它在C#土地上没有必要或正常)。这看起来更典型:

while (!int.TryParse(Console.ReadLine(), out num))
{
    // etc.
}

答案 1 :(得分:7)

实现这一目标的标准方法是使用while循环。

int num;
while (!int.TryParse(Console.ReadLine(), out num))
{
    Console.WriteLine("Your input is not valid, please try again.\n");
}

答案 2 :(得分:1)

使用while循环。

Console.Write("Please give the value no "+ index + " :");
while(!int.TryParse(Console.ReadLine(), out num))   //I find "!" easier to read then "false == "
{
    Console.WriteLine("Your input is not valid, please try again.");
    Console.WriteLine();
    Console.Write("Please give the value no "+ index + " :");
}

这里不需要递归,所以while循环更好。