我正在尝试制作现在正在添加的简单数学游戏,我想添加困难,所以我可以选择,如果我想要1-10或10-20的数字,我使用随机的它。一切都是控制台,我可以为困难写数字。
Random numberGenerator = new Random();
Console.WriteLine("what what difficulty you want?");
Console.WriteLine("1 for 1-10\n2 for 10-20\n3 for 15-40");
Console.Write("i want:");
int hardness = Convert.ToInt32(Console.ReadLine());
if (hardness == 1)
{
goto hardness1;
}
hardness1:
int num01 = numberGenerator.Next(1, 11);
int num02 = numberGenerator.Next(1, 11);
int num03 = numberGenerator.Next(1, 11);
int num04 = numberGenerator.Next(1, 11);
if (answer == 1) {
goto startofadding;
}
hardness2:
int num01 = numberGenerator.Next(10, 21)
int num02 = numberGenerator.Next(10, 21)
int num03 = numberGenerator.Next(10, 21)
int num04 = numberGenerator.Next(10, 21)
if (answer == 1)
{
goto startofadding;
}
startofadding:
Console.WriteLine("num01 = " + num01 + " and num02 = " + num02 + " this is " + i + " loop ");
Console.WriteLine("answer is " + (num01 + num02));
Console.WriteLine("what is " + num01 + " + " + num02 + " ?");
Console.Write("Answer is: ");
int answer1 = Convert.ToInt32(Console.ReadLine());
if (answer1 == num01 + num02)
{
Console.WriteLine("correct answer");
Console.WriteLine("\n");
我正在尝试使用gotos,所以如果选择了难度,它可以采用它需要的数字,但它给了我:
名为'num01'的局部变量或函数已在范围
中定义
错误,我知道它是什么,但我不知道如何解决它。我做错了什么或者有更好的方法吗?如果有什么不清楚,请询问更多细节和更多代码,试图解释它尽可能好
答案 0 :(得分:2)
名为'num01'的局部变量或函数已在范围
中定义
您已经在num01
标签下定义了hardness1
。
您可以通过仅声明一次变量来修复它。不要在下一个标签下重新声明相同的变量,因为它在同一个块范围内。
一旦你开始工作,就摆脱goto
。在这种情况下,switch语句可能是最简单的方法。
您可以将if条件和hardness0x
块替换为:
switch(hardness)
{
case 1:
// code for hardness 1
break;
case 2:
// code for hardness 2... etc.
break;
}
// Code under startofadding follows. No need for goto or goto-labels
您下一步将尝试完全摆脱switch语句,这将大大简化您的代码。