C#while循环,范围为0 - 5

时间:2011-08-06 03:24:32

标签: c# validation loops while-loop

我是c#的新手,并试图通过使用范围从0到5的while循环来创建验证,我的问题是当使用此范围时它也接受字符串字符,我怎么能停止这个并且只有允许整数0 - 5?

我的代码到目前为止

   static void Main()

    {
        int Rateing1, Rateing2;

         Console.Write("Please rate from 0 - 5:   ");
         Rateing1 = valid_rating();

         Console.Write("\nPlease rate from 0 - 5:    ");
         Rateing2 = valid_rating();

         Console.WriteLine("\nRateing1 is {0}", Rateing1);
         Console.WriteLine("Rateing2 is {0}", Rateing2);
     }

    static int valid_rating()

          {
            int rating;

            int.TryParse(Console.ReadLine(), out rating);
                while (rating < 0 || rating > 5)
                     {
                       Console.Write("\nInvalid Input, please input an integer from 0 - 5");
                       Console.Write("\nPlease enter new rating:   ");
                       int.TryParse(Console.ReadLine(), out rating);
                     } 
            return rating;
          }

1 个答案:

答案 0 :(得分:4)

将循环更改为:

while (!int.TryParse(Console.ReadLine(), out rating) || rating < 0 || rating > 5)
{
    Console.WriteLine();
    Console.WriteLine("Invalid Input, please input an integer from 0 - 5");
    Console.Write("Please enter new rating:   ");
}

也就是说,如果以下以下任何,您希望用户再次输入输入:

  • 他们输入的号码无效。
  • 他们输入的数字小于0.
  • 他们输入的数字大于5。

您的问题是您没有使用int.TryParse返回的值(bool表示成功或失败);您只是使用写入rating的值,在失败的情况下,该值为0(和!(0 < 0))。