2011-08-06 59 views
2

我是新来的C#和试图通过使用while循环的范围从0 - 5创建一个验证,我的问题是,当这个范围被使用它也接受字符串字符,我怎样才能阻止这个,只允许整数0 - 5?C#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; 
      } 
+0

Int.TryParse()? –

+0

是“valid_entry”的一个字符串吗?你能展示你宣布的东西吗? –

回答

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))。

+0

感谢您的快速回复:)完美运作 – Joshua