我将标识符更改为英语,因此可以在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);
}
答案 0 :(得分:4)
正如Pikoh所说,只是颠倒了条件。尝试分解代码并亲自查看:
假设游戏生成了一个秘密号码42。 假设您选择了数字50。
然后你会看到这种情况:
if (50 > 42)
{
Console.WriteLine("Higher");
}
if (50 < 42)
{
Console.WriteLine("Lower");
}
所以它会被“解释”为:
{{1}}
您可以看到您的逻辑不正确。当数字低时,它会告诉你降低;当数字很高时,它会告诉你更高。
您也可以参考这个答案: https://stackoverflow.com/a/46665389/4352946
答案 1 :(得分:1)
再次玩游戏:
当用户按Y时,您正在调用退出该功能的return
。
您可以放置一个无限循环(如while(true)
)将代码从int gameNumber = generator.Next(1, 100);
打包到最后,然后将return
更改为break
。
这将退出内循环并返回到新循环,从而生成一个新数字并重新开始。