Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的while语句有什么问题?Else声明获胜';不写_C#_While Loop - Fatal编程技术网

C# 我的while语句有什么问题?Else声明获胜';不写

C# 我的while语句有什么问题?Else声明获胜';不写,c#,while-loop,C#,While Loop,除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 = guess

除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
//声明变量
整数=4;
int猜测计数=0;
智力猜测;
//获得第一个号码
WriteLine(“猜一个介于1和10之间的数字:”);
guess=Convert.ToInt32(Console.ReadLine());
猜数=猜数+1//增量计数器
while(guess!=number)//不断重复,直到选择了数字
{
guessCount=guessCount+1;//递增计数器
if(guessnumber)//if语句if guess大于number
{
WriteLine(“你的猜测太高了。”);
}
否则//
{
Console.WriteLine(“你明白了!!”);
}
//在这段时间结束后,询问一个新的猜测
控制台。WriteLine(“再次猜测:”);
guess=Convert.ToInt32(Console.ReadLine());
}
//显示输出
WriteLine(“你在“+guessCount+”guesses.”中找到了答案);
Console.ReadLine()//让窗户开着

当它进入
循环时,它意味着
猜测
=
number
这里唯一可能的状态是您已经检查过的
guess
guess>number
,并且
guess=number
是没有意义的,因为如果
guess
等于
number
它甚至不会进入
循环。这就是为什么您的
else
语句从不执行,因为您的
else
语句检查的唯一状态是
guess==number
您的表达式状态:guess!=数字,只要用户不键入4(您的硬编码值),则该值为真。您正在检查while表达式之前设置guess,因此如果用户键入正确的数字,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());   
}
//声明变量
整数=4;
int猜测计数=0;
智力猜测;
//获得第一个号码
WriteLine(“猜一个介于1和10之间的数字:”);
//问题A:用户在4中键入->猜测变为等于数字->而表达式变为假->而正文将不执行
guess=Convert.ToInt32(Console.ReadLine());
while(guess!=number)//不断重复,直到选择了数字
{
guessCount=guessCount+1;//递增计数器
if(guessnumber)//if语句if guess大于number
{
WriteLine(“你的猜测太高了。”);
}
否则//
{
Console.WriteLine(“你明白了!!”);
}
//在这段时间结束后,询问一个新的猜测
控制台。WriteLine(“再次猜测:”);
//问题B:用户在4中键入->猜测变为等于数字->而表达式变为false->循环结束
guess=Convert.ToInt32(Console.ReadLine());
}

while(guess!=number)
我迫不及待地想赢并得到答案“你猜对了!再猜一次”你需要连续猜两次才能退出
while
循环