1

下面是我的代码

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();          
            }
        }
    }
}

在这里我设置了while条件但仍然无法继续。它正在无限循环

在这里我想应用一个条件,如果用户输入的数字不是 4,那么它应该开始并且用户应该再次输入数字。现在它正在关闭控制台应用程序。如何放置while loo

4

7 回答 7

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

        }    
}
于 2013-03-07T14:25:11.850 回答
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 !");
     }
}
于 2013-03-07T14:25:49.380 回答
0

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

于 2013-03-07T14:25:21.907 回答
0
  while (input1 != 4)
  {
      Console.WriteLine("Try agian");

  }

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

于 2013-03-07T14:25:51.720 回答
0

我更正了您的缩进,您可以看到您的 while 块仅包含 Console.WriteLine 而不是输入检查,因此 input1 不会更改并且您的循环是无限的。

如果您删除 Console.WriteLine 下的 } 并将其放在末尾,您将能够通过输入 4 来停止循环。

于 2013-03-07T14:44:55.307 回答
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 时间

于 2013-03-07T15:47:46.273 回答
-1

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

于 2013-03-07T14:26:26.093 回答