【问题标题】:While loop not producing correct results虽然循环没有产生正确的结果
【发布时间】:2011-01-19 09:18:00
【问题描述】:

我正在尝试使用 while 循环向用户询问 1 到 10 之间的数字。当用户无法输入 1 到 10(含)之间的数字时,我想向他们询问另一个数字。

到目前为止我的代码是:

int i = 0;
Console.WriteLine("Enter a number.");
while (i <= 10)
{
    Console.ReadLine();

    if (i > 1 && i < 10)
    {
        Console.ReadLine();
        continue;
    }

    if (i < 1 && i > 10)
    {
        Console.WriteLine("Enter New Number...");
        break;
    }

    Console.ReadLine();
}

我做错了什么?

【问题讨论】:

  • 请为您的问题使用更详细的标题(这是一个可以通过标签识别的 c# 问题...)
  • 如果您接受了对您有帮助的答案,那就太好了。至少有 4 个 :) SLaks 是最好的,因为它给了你所有的答案,让你思考了一下 ^^
  • 还有一个旁注:永远不要使用“i”作为全局变量。以后它会让你感到困惑:D
  • 您应该通过单击空心复选标记来接受答案。

标签: c# while-loop


【解决方案1】:

你正在写 if (i &lt; 1 &amp;&amp; i &gt; 10)
i 不能同时小于 1 和大于 10
(提示:'and' 是错误的词)

此外,您从未为 i 赋值。
(提示:拨打int.Parse

另外,您可能想要交换break(停止循环)和continue(继续循环)

另外,while 循环中的条件应该是什么?

【讨论】:

  • 最佳答案 ;) 它教导不要在盘子上提供现成的代码^^
【解决方案2】:
int i = 0;
while (i < 1 || i > 10)
{
    int.TryParse(Console.ReadLine(),out i);
}

或带文字

int i = 0;
Console.WriteLine("Enter a number");
int.TryParse(Console.ReadLine(),out i);
while (i < 1 || i > 10)
{
    Console.WriteLine("Try Again");
    int.TryParse(Console.ReadLine(),out i);
}

:)

【讨论】:

    【解决方案3】:
    if (i < 1 && i > 10)
    

    if (i < 1 || i > 10)
    

    【讨论】:

      【解决方案4】:

      两件事:

      • 您永远不会将除 0 以外的任何内容分配给 i - 这样它就永远不会真正改变。您需要解析用户输入。

      • (i &lt; 1) &amp;&amp; (i &gt; 10) 永远不会为真,您可能希望使用逻辑或运算符||

      【讨论】:

        【解决方案5】:

        if (i &gt; 1 &amp;&amp; i &lt; 10) 真的是你想要的吗?它检查一个数字是否大于 1 且小于 10。如果数字是 1 或 10 怎么办?

        【讨论】:

        • 他希望数字在 1 到 10 之间。
        • “输入一个介于 1 和 10(含)之间的数字”这句话让我相信 1 和 10 应该被视为该范围的一部分。
        【解决方案6】:

        加上条件不正确,应该是:

        if(i < 1 || i > 10)
        

        您也没有将 i 指定为任何东西。您使用 Console.ReadLine() 但实际上并没有将其转储到 i 中。这会让你陷入无限循环。

        如果您收到的值不是整数,您还会面临类型问题的风险。您应该执行一些类型转换和数字检查以防止出现转换问题。

        【讨论】:

          【解决方案7】:

          未经测试的代码

          int i = 0;
          int count = 0;
          
          Console.WriteLine("Enter a number.");
          while (count <= 10)
          {
             i = Convert.ToInt32(Console.ReadLine());
          
             if (i > 1 && i < 10)
             {
                 count++;
                 continue;
          
             }
             if (i < 1 || i > 10)
             {
                Console.WriteLine("Enter New Number...");
                continue;
             }
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-28
            • 1970-01-01
            • 2021-08-09
            • 2020-06-08
            • 2015-03-02
            相关资源
            最近更新 更多