繁体   English   中英

我的while语句有什么问题? 其他声明不会写

[英]What is wrong with my while statement? Else statement won't write

除else语句外,其他所有内容均正常运行。 一旦数字彼此相等,它将被跳过。 最后没有说“你明白了”。

//declare variables
int number = 4;
int guessCount = 0;
int guess;

//get first number
Console.WriteLine("Guess a number between 1 and 10:");
guess = Convert.ToInt32(Console.ReadLine());
guessCount = guessCount + 1; //increment counter

while (guess != number) //keep repeating until number is chosen
{
    guessCount = guessCount + 1; //increment counter

    if (guess < number) //if statement if guess is less than number
    {
        Console.WriteLine("Your guess is too low.");
    }
    else if (guess > number) //if statement if guess is more than number
    {
        Console.WriteLine("Your guess is too high.");
    }
    else //
    {
        Console.WriteLine("You got it!!");
    }

    //end of while to ask for a new guess
    Console.WriteLine("Guess again: ");
    guess = Convert.ToInt32(Console.ReadLine());
}

//display output
Console.WriteLine("You figured it out in " + guessCount + " guesses.");
Console.ReadLine(); //keep window open

当进入while循环时,这意味着guess!= number并且这里唯一可能的状态是已经检查过的guess < numberguess > number ,而guess = number是没有意义的,因为如果guess等于number它甚至没有进入while循环。 这就是为什么else语句从不执行的原因,因为else语句要检查的唯一状态是guess == number

您的while表达式表示: guess !=数字 ,只要用户未键入4 (您的硬编码值),它就为真。 您正在检查while表达式之前设置猜测值 ,因此,如果用户键入正确的数字,则while表达式将为false并将被跳过。 我在问题所在的位置注释了您的代码。

//declare variables
int number = 4;
int guessCount = 0;
int guess;

//get first number
Console.WriteLine("Guess a number between 1 and 10:");

// Problem A: user types in 4 -> guess becomes equal to number -> while expression gets false -> while body will not be executed
guess = Convert.ToInt32(Console.ReadLine());

while (guess != number) //keep repeating until number is chosen
{
    guessCount = guessCount + 1; //increment counter
    if (guess < number) //if statement if guess is less than number
    {
        Console.WriteLine("Your guess is too low.");
    }
    else if (guess > number) //if statement if guess is more than number
    {
        Console.WriteLine("Your guess is too high.");
    }
    else //
    {
        Console.WriteLine("You got it!!");
    }

    //end of while to ask for a new guess
    Console.WriteLine("Guess again: ");

    // Problem B: user types in 4 -> guess becomes equal to number -> while expression gets false -> loop ends
    guess = Convert.ToInt32(Console.ReadLine());   
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM