我正在尝试使这个循环工作,所以它会一直询问一个数字,直到用户输入999.但是对于这个版本的代码,它不会构建说我不能在循环中声明num因为我在这个范围内赋予它不同的含义。
由于我对这段代码的分配规则,使用了try和catch。
int num;
while (num != 999)
{
Console.WriteLine("Enter a number between 0 and 99");
string input = Console.ReadLine();
try
{
int num = Convert.ToInt32(input);
Console.WriteLine("This is element number " + num + " : " + randNums[num]);
}
catch
{
Console.WriteLine("Data inputted is not between 0 and 99");
}
}
Console.WriteLine("You chose the secret value, well done!");
答案 0 :(得分:2)
您在同一范围内定义了两次int num
。更改其中一个的名称。循环中的那个是无效的,因为你已经定义了一个。
或者,如果要重新分配相同的变量,可以从内部删除int
。这样它每次都会用新值覆盖它。
第一次初始化时,请务必为其指定值。
示例:强>
int num = 0;
答案 1 :(得分:2)
问题是你用int num
声明变量两次。您不需要在循环中重新声明变量,只需指定它:
int num = 0; // initialized num to 0 here
while (num != 999)
{
Console.WriteLine("Enter a number between 0 and 99");
string input = Console.ReadLine();
try
{
num = Convert.ToInt32(input); // Changed int num to num here
Console.WriteLine("This is element number " + num + " : " + randNums[num]);
}
catch
{
Console.WriteLine("Data inputted is not between 0 and 99");
}
}
Console.WriteLine("You chose the secret value, well done!");
答案 2 :(得分:1)
除了其他答案,您可以执行此操作,例如:
if (someCondition)
{
int num = 23;
}
else
{
int num = 12;
}
但你不能这样做:
int num = 12;
if(someCondition)
{
int num = 23;
}
因为所有变量都有自己的范围,并且如果在外部范围内定义变量,则无法在inner-scope中定义具有相同名称的新变量。如果您只想更新变量,您不需要再次声明它,只需使用简单的赋值。有关详细信息,请参阅Compiler Error CS0136
文档。
答案 3 :(得分:0)
您正在尝试声明2个同名的不同变量。而不是声明第二个,只需使用您已声明的那个(在第二次使用时取消int
)。
...
try
{
num = Convert.ToInt32(input); // <-- Using existing declaration here
Console.WriteLine("This is element number " + num + " : " + randNums[num]);
}
...
答案 4 :(得分:0)
您有两个具有相同名称的int变量。您需要更改另一个,因为您的输入的int变量将接受用户指定的数字,另一个int变量负责检测输入的数字是否为999.