2013-03-07 103 views
1

下面是我的代码While循环在C#中去无限

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条件但仍无法proceed.It的去无限循环

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

+1

你将不得不在循环中也有'ReadKey',并检查'4',并打破等等。当你在循环中执行'WriteLine'时,它不会回溯到'int intpu1 ...'行。它只是继续前进,因为'input1' _is总是4_。 – 2013-03-07 14:26:34

回答

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(),让你不需要输入双人间时间

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

     }  
} 
+0

没有发生,当我输入4以外的数字时,它应该完成这个过程,直到我完成正确的猜测,即4 – user2144638 2013-03-07 14:35:17

0

好,input1不环路内的任意位置发生变化。所以,当然,如果循环输入一次,它就会每次输入。

2

添加

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

在while循环的结束,或者输入1将永远不会改变。

但这还不够。

你应该做的(不是很好,但工作)

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 !"); 
    } 
} 
0
while (input1 != 4) 
    { 
     Console.WriteLine("Try agian"); 

    } 

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

-1

你有一个额外}权在关闭while循环的if (input1 == 4)之上,所以while循环从不退出,因为它内部没有代码。将该花括号向下移动到if else以下。

+0

-1。即使他做出这些改变,input1的值也不会改变,并且循环保持无限。 – IronMan84 2013-03-07 14:31:13

0

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

如果你在Console.WriteLine下删除了这个},并且你把它放到了最后,你将能够停止4个输入的循环。