C# 打破这个简单的';而';环

C# 打破这个简单的';而';环,c#,C#,哪里是打破这个while循环的正确位置 简单的控制台数字猜测游戏。用户有3次尝试猜测随机生成的数字 我的问题是,在第三次尝试时,如果猜测不正确,控制台将打印“重试-游戏结束”,而不仅仅是“游戏结束”。如果第三个猜测不正确,那么退出循环并说“游戏结束”的正确位置是什么 使用系统; 名称空间asdf2 { 类主类 { 公共静态void Main(字符串[]args) { 随机r=新随机(); 整数=r.Next(1,6); int nofguesss=0; WriteLine(“你有3次尝试猜我的号

哪里是打破这个while循环的正确位置

简单的控制台数字猜测游戏。用户有3次尝试猜测随机生成的数字

我的问题是,在第三次尝试时,如果猜测不正确,控制台将打印“重试-游戏结束”,而不仅仅是“游戏结束”。如果第三个猜测不正确,那么退出循环并说“游戏结束”的正确位置是什么

使用系统;
名称空间asdf2
{
类主类
{
公共静态void Main(字符串[]args)
{
随机r=新随机();
整数=r.Next(1,6);
int nofguesss=0;
WriteLine(“你有3次尝试猜我的号码”);
而(不超过3)
{
字符串guess=Console.ReadLine();
int guessedNumber=将.Convert.转换为Int16(猜测);
如果(猜测的数字!=数字)
{
Console.WriteLine(“重试”);
nofguesss++;
}
其他的
Console.WriteLine(“明白了!”);
}
控制台。WriteLine(“游戏结束”);
}
}
}

这里的复杂情况是,在执行循环体之前,
while
循环评估条件。相反,您可以使用执行主体然后评估条件的
do while
循环。另外,请注意,无论您使用何种类型的循环,只要用户猜对了,您都应该打破它:

do
{
    string guess = Console.ReadLine();
    int guessedNumber = Convert.ToInt16(guess);

    if (guessedNumber != number)
    {
        Console.WriteLine("Try again");
        nOfGuesses++;
    }
    else
    {
        Console.WriteLine("You got it!");
        break;
    }
} while (nOfGuesses < 3);
do
{
字符串guess=Console.ReadLine();
int guessedNumber=将.Convert.转换为Int16(猜测);
如果(猜测的数字!=数字)
{
Console.WriteLine(“重试”);
nofguesss++;
}
其他的
{
Console.WriteLine(“明白了!”);
打破
}
}而(nofguesss<3);

这里的复杂情况是,在执行循环体之前,
while
循环评估条件。相反,您可以使用执行主体然后评估条件的
do while
循环。另外,请注意,无论您使用何种类型的循环,只要用户猜对了,您都应该打破它:

do
{
    string guess = Console.ReadLine();
    int guessedNumber = Convert.ToInt16(guess);

    if (guessedNumber != number)
    {
        Console.WriteLine("Try again");
        nOfGuesses++;
    }
    else
    {
        Console.WriteLine("You got it!");
        break;
    }
} while (nOfGuesses < 3);
do
{
字符串guess=Console.ReadLine();
int guessedNumber=将.Convert.转换为Int16(猜测);
如果(猜测的数字!=数字)
{
Console.WriteLine(“重试”);
nofguesss++;
}
其他的
{
Console.WriteLine(“明白了!”);
打破
}
}而(nofguesss<3);

与其他答案没有太大区别,但完全删除
中断可能是有意义的。(此处插入代码/宗教战争。)


while(++nofguesss与其他答案没有太大区别,但完全删除
中断
(在此处插入代码/宗教战争)


while(++nofguesss放一个'if'(guessedNumber@Hogler-你的意思是“如果(nOfGusses
if(nofguesss>=2)”中断;
在同一个位置会产生相同的效果。实际上,你也需要在“得到”之后中断。现在,你在“得到”之后继续,直到输入三个数字。输入一个“如果”(guessedNumber@Hogler-你是说“如果”(nOfGusses
如果(nofguesss>=2)break;
在同一个地方会有相同的效果。实际上,你也需要在“got it”之后break。现在,你在“got it”之后继续,直到输入三个数字。这实际上没有任何变化,只是它忽略了第一个测试。这实际上没有任何变化,只是它忽略了第一个测试。
while(++nOfguesses <= 3 && number != guessedNumber)
{
    var guess = Console.ReadLine();
    var guessedNumber = Convert.ToInt16(guess);
    if (number != guessedNumber)
    {
        Console.WriteLine("Try again.");
    }
    else
    {
        Console.WriteLine("You got it!");
    }
}
Console.WriteLine("Game over.");