我是 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;
}
最佳答案
将循环更改为:
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)
)。
关于C# while 循环范围为 0 - 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6964541/