我最近正在开展一个关于一个程序的项目,该项目可以在1-10之间取一个随机数,让你猜猜它是什么,你有五次机会猜对了。但每次我运行程序时,当我输入一个比随机数更大或更小的数字时,程序会立即耗尽这样的机会:
You are now playing 'Guess a Number'! The number is going to draw randomly from the range of 1 - 10. Enter the number you think the console drew and you have five chances to guess! Good luck!
5
The number you entered is larger than the random number, you have 4 chances left.
The number you entered is larger than the random number, you have 3 chances left.
The number you entered is larger than the random number, you have 2 chances left.
The number you entered is larger than the random number, you have 1 chances left.
The number you entered is larger than the random number, you have 0 chances left.
Sorry, you have no more guesses.
以下是原始代码:
static void Main(string[] args)
{
bool quit = false;
while (!quit)
{
Console.WriteLine("You are now playing 'Guess a Number'! The number is going to draw randomly from the range of 1 - 10. Enter the number you think the console drew and you have five chances to guess! Good luck!");
Random random = new Random();
bool guessingNumber = true;
int guesses = 5;
int randomNumber = random.Next(1, 10);
string playerGuess = Console.ReadLine();
List<int> num = new List<int>();
int oneNum;
if (int.TryParse(playerGuess, out oneNum))
{
num.Add(oneNum);
}
while(guessingNumber)
{
if (oneNum < randomNumber)
{
guesses--;
Console.WriteLine("The number you entered is smaller than the random number, you have {0} chances left.", guesses);
break;
}
if (oneNum > randomNumber)
{
guesses--;
Console.WriteLine("The number you entered is larger than the random number, you have {0} chances left.", guesses);
}
if (oneNum == randomNumber)
{
Console.WriteLine("Congratulations! You have guessed the right number!");
}
if (guesses == 0)
{
Console.WriteLine("Sorry, you have no more guesses.");
guessingNumber = false;
}
}
}
请帮我找到问题,因为我很难做到这一点,谢谢!
答案 0 :(得分:1)
你主要犯了两个错误。
首先,你没有在循环的每次迭代中读取新的输入,所以如果输入错误,while循环返回,看到相同的输入,将它与随机数比较,得到相同的结果,下一次迭代...
要纠正此问题,请将读取输入的代码移至while循环的开头:
while (guessingNumber)
{
playerGuess = Console.ReadLine();
if (int.TryParse(playerGuess, out oneNum))
{
num.Add(oneNum);
}
...
其次,如果猜测较小,你不应该break
离开循环。当猜测正确时,您应break
。
if (oneNum < randomNumber)
{
guesses--;
Console.WriteLine("The number you entered is smaller than the random number, you have {0} chances left.", guesses);
// don't break here!
}
if (oneNum > randomNumber)
{
guesses--;
Console.WriteLine("The number you entered is larger than the random number, you have {0} chances left.", guesses);
}
if (oneNum == randomNumber)
{
Console.WriteLine("Congratulations! You have guessed the right number!");
break; // add this!
}
答案 1 :(得分:0)
如果number大于或小于随机数,则需要使guessingNumber = false并且guess counter必须超出第一个while循环。
static void Main(string[] args)
{
bool quit = false;
int guesses = 5;
while (!quit)
{
Console.WriteLine("You are now playing 'Guess a Number'! The number is going to draw randomly from the range of 1 - 10. Enter the number you think the console drew and you have five chances to guess! Good luck!");
Random random = new Random();
bool guessingNumber = true;
int randomNumber = random.Next(1, 10);
string playerGuess = Console.ReadLine();
List<int> num = new List<int>();
int oneNum;
if (int.TryParse(playerGuess, out oneNum))
{
num.Add(oneNum);
}
while (guessingNumber)
{
if (oneNum < randomNumber)
{
guesses--;
Console.WriteLine("The number you entered is smaller than the random number, you have {0} chances left.", guesses);
guessingNumber = false;
break;
}
if (oneNum > randomNumber)
{
guesses--;
Console.WriteLine("The number you entered is larger than the random number, you have {0} chances left.", guesses);
guessingNumber = false;
}
if (oneNum == randomNumber)
{
Console.WriteLine("Congratulations! You have guessed the right number!");
guessingNumber = false;
}
if (guesses == 0)
{
Console.WriteLine("Sorry, you have no more guesses.");
guessingNumber = false;
}
}
}
}
答案 2 :(得分:0)
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
if (! window.jQuery) {
alert('No Connection !!');
}
else {
// internet connection established
}
</script>