Else语句不工作
int number = 4;
int guesscount = 0;
int guess;
Console.WriteLine("Guess a number between 1 and 10: ");
guess = Convert.ToInt32(Console.ReadLine());
while (guess != number)
{
guesscount = guesscount + 1;
if (guess < number)
{
Console.WriteLine("Your guess is too low");
}
else if (guess > number)
{
Console.WriteLine("Your guess is too high");
}
else
{
Console.WriteLine("You got it!!");
}
Console.WriteLine("Guess again: ");
guess = Convert.ToInt32(Console.ReadLine());
Console.ReadLine();
}
当运行代码的if和else if语句工作,但猜测正确的号码时,(4),消息“你猜对了”不显示该窗口刚刚关闭Else语句不工作
如果你在圈内,guess
不等于number
。
在操作员看到你的情况。
如果输入正确的数字,则while循环表达式为false(猜测等于数字),以便不执行代码块。这里是一个有效的解决方案:
public static void Main(string[] args) {
int number = 4;
int guesscount = 1;
int guess;
string guessMessage;
Console.WriteLine("Guess a number between 1 and 10: ");
guess = GetNumber();
while (guess != number) {
if (guess < number) {
Console.WriteLine("Your guess is too low");
}
else if (guess > number) {
Console.WriteLine("Your guess is too high");
}
Console.WriteLine("Guess again: ");
guess = GetNumber();
guesscount++;
}
if (guesscount == 1)
guessMessage = "Well done!!! You got it first time!";
else
guessMessage = "You got it!! It took " + guesscount + " guesses.";
Console.WriteLine(guessMessage);
Console.ReadLine();
}
private static int GetNumber() {
int number;
while (!Int32.TryParse(Console.ReadLine(), out number)) {
Console.WriteLine("That was not a number!\nGuess again: ");
}
return number;
}
为什么不使用guessCount ++; ? –
是的,我忽略了这个猜测数,因为它没有被使用。尽管使用guesscount将是错误的。已更新的代码正确使用它,并在最后得到一个更好玩的消息:) –
此外,如果输入非数字字符,Convert.ToInt32将引发异常;已更新代码来处理此问题。 –
Errrm ..... 请不 “竞猜又说:” 工程? 它工作,然后添加控制台。 Readkey()后
Console.WriteLine("You got it!!");
这应该在评论 – Kokombads
在该行之后添加'Console.Readkey()'不会解决问题。最后的'else'块永远不会被击中。 –
难道是因为第一次的猜测之后,如果正确的号码被输入,程序进入了循环试图再次显示消息之前?
为什么不尝试一个do while循环:
int number = 4;
int guesscount = 0;
int guess;
do {
if (guesscount == 0) {
Console.WriteLine("Guess a number between 1 and 10: ");
} else {
Console.WriteLine("Guess again: ");
}
guesscount = guesscount + 1;
guess = Convert.ToInt32(Console.ReadLine());
Console.ReadLine();
if (guess < number)
{
Console.WriteLine("Your guess is too low");
}
else if (guess > number)
{
Console.WriteLine("Your guess is too high");
}
else
{
Console.WriteLine("You got it!!");
}
} while (guess != number)
首先,你可以把“你说对了”指令外循环,它将运行在猜测等于号(即是你在找什么)。循环将工作,而你不猜测数字,所以只有大于和小于在这里评估。这里是一个工作代码:
int number = 4;
int guesscount = 0;
int guess = 0;
Console.WriteLine("Guess a number between 1 and 10: ");
guess = Convert.ToInt32(Console.ReadLine());
while(number != guess){
if(guess < number)
Console.WriteLine("Your guess is too low");
else
Console.WriteLine("Your guess is too high");
Console.WriteLine("Guess again: ");
guesscount = guesscount + 1;
guess = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine("You got it!!!!");
看看你的'while'条件...如果他们猜测正确的数字,while循环不执行。 –
您的while循环中还有两个ReadLine。为什么? –
这对于您学习如何使用断点,单步执行代码,以便您可以看到发生的事情来说,将是一次极好的机会。 –