【发布时间】:2016-09-22 18:01:46
【问题描述】:
我在课堂上的任务是使用 c# 和 do/while、if/else 循环创建一个随机数生成猜谜游戏。这项任务似乎很容易;但是,我遇到了问题,因为我应该通过提示用户“输入要猜测的最大值”来开始游戏。 我无法让我的程序正常工作,因为每次运行它时,无论我输入什么值,它都会说“选择一个介于 1 和 0 之间的值”
我已附上我的 exe。
Random generator = new Random();
bool truth = true;
int MaxRange = Convert.ToInt32(truth); ;
int userguess = 0;
int outputnumber = generator.Next(MaxRange);
do
{
Console.WriteLine(" Enter a max number you want to guess from!", MaxRange);
Console.ReadLine();
Console.WriteLine("please make a guess between 1 and {0}", outputnumber);
if (userguess != outputnumber)
{
userguess = Convert.ToInt32(Console.Read());
if (userguess < outputnumber)
{
Console.WriteLine("That is not correct, Guess again");
Console.ReadLine();
}
if(userguess > outputnumber)
{
Console.WriteLine("That is not correct, Guess again");
Console.ReadLine();
}
else if (userguess == outputnumber)
{
console.writeline("That is correct, the number is {0}, outputnumber);
}
}
} while (truth == false);
}
}
}
【问题讨论】:
-
因为您在任何类型的
if块中都没有该代码。它每次都会打印。 -
也许我是盲人..但我看不到您将
truth设置为false的任何地方。让我去拿我的另一副眼镜 -
我没有看到您设置用户响应的最大数量。我不确定您如何将 bool 转换为 int 以获得最大范围。我建议在 maxrange 和用户进行的猜测上都使用 TryParse,以确保他们输入了一个 int。
-
如何使用调试器并学习如何使用它?单步执行代码并检查变量通常比在 SO 上询问要容易很多。
-
除了其他人所说的之外,
Console.ReadLine()(请参阅here)返回一个字符串,这是用户键入的内容。您实际上并不是每个人都试图从中获取价值,因此猜测和最大值永远不会被修改。您需要userguess = Convert.ToInt32(Console.ReadLine())之类的东西(并且还需要处理用户键入非整数的情况,但这是一个不同的主题)。一般来说,如果你使用 C#,MSDN 是你的朋友。