在猜数字游戏中使用goto语句是个坏主意吗?C#
我对编程相当陌生。我听说使用GOTO语句是不好的。因此,如果您能给我一些建议,我将不胜感激。谢谢您的帮助在猜数字游戏中使用goto语句是个坏主意吗?C#,c#,C#,我对编程相当陌生。我听说使用GOTO语句是不好的。因此,如果您能给我一些建议,我将不胜感激。谢谢您的帮助 Start: Random numGen = new Random(); int num = numGen.Next(1, 101); Console.WriteLine("Guess the number between 1 and 100"); Console.Write("Your answer: ");
Start:
Random numGen = new Random();
int num = numGen.Next(1, 101);
Console.WriteLine("Guess the number between 1 and 100");
Console.Write("Your answer: ");
fail:
int answer = Convert.ToInt32(Console.ReadLine());
if (answer == num)
{
Console.WriteLine("Congratulations,the number was " + num);
Console.WriteLine();
goto Start;
}
else if (answer > num)
{
Console.WriteLine("Lower");
goto fail;
}
else
{
Console.WriteLine("Higher");
goto fail;
}
例如,您可以将其重写为使用循环:
Random numGen = new Random();
int num = numGen.Next(1, 101);
Console.WriteLine("Guess the number between 1 and 100");
Console.Write("Your answer: ");
while(true)
{
int answer = Convert.ToInt32(Console.ReadLine());
if (answer == num)
{
break;
}
if (answer > num)
{
Console.WriteLine("Lower");
}
else
{
Console.WriteLine("Higher");
}
}
Console.WriteLine("Congratulations,the number was " + num);
Console.WriteLine();
我不会说Gotos“总是”一个坏主意,但只要有可能,就尽量避免它们 以下是您的代码的简化版本:
var random = new Random();
while (true)
{
var number = random.Next(1, 101);
Console.WriteLine("Guess the number between 1 and 100");
Console.Write("Your answer: ");
int answer;
while ((answer= Convert.ToInt32(Console.ReadLine())) != number)
{
Console.WriteLine(answer > number ? "Lower" : "Higher");
}
Console.WriteLine("Congratulations,the number was " + number);
Console.WriteLine();
}
是的,你为什么不使用方法?也许更适合这个问题。这总是一个坏主意,有很多更好的方法来组织你的代码。Goto总是一个坏主意。你的问题是基于观点的,离题的。首先,我要读一读goto声明的作用,这样你就可以自己决定它的用途谢谢你的帮助!虽然while(true)也使代码不必要地难以阅读,因为您必须找到循环中的所有断点。最好使用while来定义条件。@JanErikGunnar我也考虑过这个问题,但我真的想不出一个不重复代码的方法。我对答案做了更改,但同行评审不接受编辑。。。这里有一个建议:想一想,但是我也不太喜欢“如果(…>)或者如果(…<)”这个词。