C# while 循环范围为 0 - 5

标签 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;
          }

最佳答案

将循环更改为:

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/

相关文章:

html - 我应该清理 Markdown 吗?

javascript - jquery验证: adding a required rule with custom message based on wether a different form field has a value

java - 如何让我的输出包含我需要的空格?

python - 更改其他 Python 文件循环中的变量

c# - 发送邮件异步 : An asynchronous module or handler completed while an asynchronous operation was still pending

c# - 用于 C++ 的 ReSharper

validation - MVC 3 验证 - 仅在失去焦点或提交后显示错误消息?

javascript - 如何将背景动画制作成循环(重复功能)

c# - 将自定义文件名设置为引用的 dll

c# - asp.net c# 中的登录页面错误