C#猜猜随机数

我将标识符更改为英语,因此可以在Code Review上轻松理解。 我使用了重构,因此它会立即改变,但是当它出错时。 我的代码不再起作用了。 但是代码没有完成。 我仍然需要找到一种方法再次发挥。 我在这做错了什么?

目标:

创建一个控制台应用程序,您需要猜测随机生成的数字介于1和100之间。当您的猜测低于生成的数字时,它会说更高。 如果它高于生成的数字,它会说更低。 检查代码中的注释。

public static void Main(string[] args) { const int STOPVALUE = 0; int inputNumber, count = 0; Random generator = new Random(); int gameNumber = generator.Next(1, 100); //I output the game number to see beforehand want the winning number is. //The generator is doing it's job right. Console.WriteLine(gameNumber); //Here is where it goes wrong and i can't seem to understand why. //It keeps saying go higher even when the input number is 100. do { Console.Write("(Stop Value: 0) Insert a number: "); inputNumber = int.Parse(Console.ReadLine()); count++; if (gameNumber == inputNumber) { Console.WriteLine("Your guess is correct."); Console.WriteLine("Number of turns: " + count); count = 0; Console.WriteLine("Play again? (Y/N)"); char startOver = char.Parse(Console.ReadLine()); if (startOver == 'Y') { return; } if (startOver == 'N') { Environment.Exit(0); } } if (inputNumber > gameNumber) { Console.WriteLine("Higher"); } if (inputNumber < gameNumber) { Console.WriteLine("Lower"); } } while (inputNumber != STOPVALUE); } 

正如Pikoh所说,只是颠倒了条件。 尝试分解代码并亲自查看:

假设游戏生成了一个秘密数字42.假设您选择了数字50。

然后你会看到这种情况:

 if (inputNumber > gameNumber) { Console.WriteLine("Higher"); } if (inputNumber < gameNumber) { Console.WriteLine("Lower"); } 

所以它将被“解释”为:

 if (50 > 42) { Console.WriteLine("Higher"); } if (50 < 42) { Console.WriteLine("Lower"); } 

正如您所看到的,您的逻辑不正确。 当数字低时,它会告诉你降低; 当数字很高时,它会告诉你更高。


您也可以参考这个答案: https : //stackoverflow.com/a/46665389/4352946

要再次玩游戏:当用户按Y时,您正在调用return ,退出该function。 你可以放一个无限循环(比如while(true) )包装来自int gameNumber = generator.Next(1, 100); )的代码int gameNumber = generator.Next(1, 100); 到最后,然后改变return break 。 这将退出内循环并返回到新循环,从而生成一个新数字并重新开始。