Else语句不工作

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语句不工作

+0

看看你的'while'条件...如果他们猜测正确的数字,while循环不执行。 –

+0

您的while循环中还有两个ReadLine。为什么? –

+1

这对于您学习如何使用断点,单步执行代码,以便您可以看到发生的事情来说,将是一次极好的机会。 –

如果你在圈内,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; 
    } 
+0

为什么不使用guessCount ++; ? –

+1

是的,我忽略了这个猜测数,因为它没有被使用。尽管使用guesscount将是错误的。已更新的代码正确使用它,并在最后得到一个更好玩的消息:) –

+1

此外,如果输入非数字字符,Convert.ToInt32将引发异常;已更新代码来处理此问题。 –

Errrm ..... 请不 “竞猜又说:” 工程? 它工作,然后添加控制台。 Readkey()后

Console.WriteLine("You got it!!"); 
+1

这应该在评论 – Kokombads

+0

在该行之后添加'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) 
+0

也埃里克的答案是正确的,如果你在第一次尝试时输入正确的数字while循环的条件评估为false,忽略整个块 – angel9215

+0

在你的代码示例中,当他们猜测正确的数字时,它仍然要求他们再次猜测...? –

+0

是真的,我错过了那个,我已经修复了代码,我在do while循环的开始处将if语句中的消息块 – angel9215

首先,你可以把“你说对了”指令外循环,它将运行在猜测等于号(即是你在找什么)。循环将工作,而你不猜测数字,所以只有大于和小于在这里评估。这里是一个工作代码:

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!!!!");