而C#中的循环无限

时间:2013-03-07 14:24:22

标签: c# while-loop console-application

以下是我的代码

namespace ProgrammingTesting
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("GUESS THE ANSWER");
            Console.WriteLine("Please enter the input");

            int input1 = (int.Parse(Console.ReadLine()));
            while (input1 != 4)
            {
                Console.WriteLine("Try agian");
            }
            if (input1 == 4)
            {
                Console.WriteLine("You are a winner");
                Console.ReadLine();
            }
            else if (input1 < 4)
            {
                Console.WriteLine("TOOOOO low");
                Console.ReadLine();
            }
            else if (input1 > 4)
            {
                Console.WriteLine("TOOOO high");
                Console.ReadLine();          
            }
        }
    }
}

我在这里放入条件,但仍然无法继续。它将进入无限循环

这里我想应用一个条件,如果用户输入的数字不是4,那么它应该开始,用户应该再次输入数字。现在它正在关闭控制台应用程序。如何把时间厕所

7 个答案:

答案 0 :(得分:2)

您只是在循环开始之前更改input1的值。由于你再也不会改变它,它将继续永远循环。

编辑:您可能需要考虑为循环执行以下操作:

int input1 = 0;
while (input1 != 4)
      {
        input1 = (int.Parse(Console.ReadLine()));

        if (input1 == 4)
        {
            Console.WriteLine("You are a winner");
        }
        else if (input1 < 4)
        {
            Console.WriteLine("TOOOOO low");
          Console.WriteLine("Try agian");

        }
        else if (input1 > 4)
        {
            Console.WriteLine("TOOOO high");
          Console.WriteLine("Try agian");

        }    
}

答案 1 :(得分:2)

添加

input1 = (int.Parse(Console.ReadLine()));

在while循环结束时,或者input1永远不会被更改。

但这还不够。

你应该做(不好,但有效)

static void Main(string[] args)
{
    Console.WriteLine("GUESS THE ANSWER");


    int answer;
    var success = false;
    Console.WriteLine("Please enter the input");
    while (!success) {

       var userInput = Console.ReadLine();

       if (!Int32.TryParse(userInput, out answer))
          Console.WriteLine("You must enter an integer");

       else {
          if (answer < 4)
             Console.WriteLine("Too low");

          else if (answer > 4)
             Console.WriteLine("Too high");

          else {
             Console.WriteLine("Grats !");
             success = true;
          }
        }
      if (!success)
         Console.WriteLine("Try again !");
     }
}

答案 2 :(得分:0)

嗯,input1在循环内的任何地方都不会改变。因此,当然,如果循环输入一次,则每次都输入。

答案 3 :(得分:0)

  while (input1 != 4)
  {
      Console.WriteLine("Try agian");

  }

在上面的代码中,input1的值永远不会改变,所以它永远循环

答案 4 :(得分:0)

我更正了你的缩进,你可以看到你的while块只包含Console.WriteLine,而不是输入检查,所以input1不会改变,你的循环是无限的。

如果删除Console.WriteLine下的}并将其放到最后,则可以使用4输入来停止循环。

答案 5 :(得分:0)

我修改了您的代码,请检查

     namespace ProgrammingTesting
{
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("GUESS THE ANSWER");
        Console.WriteLine("Please enter the input");
        int input1 = 0;
        while (input1 != 4)
        {
            input1 = (int.Parse(Console.ReadLine()));


            if (input1 == 4)
            {
                Console.WriteLine("You are a winner");
                Console.ReadLine();
            }
            else if (input1 < 4)
            {
                Console.WriteLine("TOOOOO low");


            }
            else if (input1 > 4)
            {
                Console.WriteLine("TOOOO high");

            }
        }
    }
}

}

删除Console.Readline(),这样就不需要输入doble time

答案 6 :(得分:-1)

你正在关闭while循环的}之上有一个额外的if (input1 == 4),所以while循环永远不会退出,因为它里面没有代码。将该大括号向下移动到if else下方。