而C#中的循环是无限的

本文关键字:无限 循环 | 更新日期: 2023-09-27 18:02:51

下面是我的代码

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以外的数字,那么它应该开始,用户应该再次输入这个数字。现在正在关闭控制台应用程序。如何放置while loo

而C#中的循环是无限的

您只是在循环开始之前更改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");
        }    
}

添加

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 !");
     }
}

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

     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((,这样您就不需要输入多臂时间

好吧,input1在循环中的任何地方都不会改变。所以,自然地,如果循环被输入一次,那么它每次都被输入。

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

在上面的代码中,input1的值从未改变,因此它永远循环

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

如果删除Console.WriteLine下的}并将其置于末尾,则可以在输入中键入4时停止循环。

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