C# 在'内声明变量;while循环';但是可以';在循环过程中不改变值
我正在尝试使这个循环工作,以便它将继续要求一个数字,直到用户输入999。然而,对于这个版本的代码,它不会说我不能在循环中声明num,因为我在这个范围内赋予它不同的含义 之所以使用try和catch,是因为我对这段代码的赋值规则C# 在'内声明变量;while循环';但是可以';在循环过程中不改变值,c#,variables,loops,while-loop,scope,C#,Variables,Loops,While Loop,Scope,我正在尝试使这个循环工作,以便它将继续要求一个数字,直到用户输入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;
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!");
在同一范围内定义了两次
int num
。更改其中一个的名称。循环中的一个无效,因为您已经定义了一个
或者,如果要重新分配相同的变量,可以从内部变量中删除int
。这样,每次它都会用一个新值覆盖它
此外,当您第一次初始化它时,请确保为其指定一个值
示例:
int num = 0;
在同一范围内定义了两次
int num
。更改其中一个的名称。循环中的一个无效,因为您已经定义了一个
或者,如果要重新分配相同的变量,可以从内部变量中删除int
。这样,每次它都会用一个新值覆盖它
此外,当您第一次初始化它时,请确保为其指定一个值
示例:
int num = 0;
问题是您使用
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!");
问题是您使用
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!");
您试图声明两个同名的不同变量。与其声明第二个,不如使用您已经声明的(在第二次使用时去掉
int
)
。。。
尝试
{
num=Convert.ToInt32(input);//您试图声明两个同名的不同变量。与其声明第二个变量,不如使用您已经声明的变量(第二次使用时去掉int
)
。。。
尝试
{
num=Convert.ToInt32(输入);//您有两个同名的int变量。您需要更改另一个,因为您有一个int变量用于输入,它将接受用户分配的数字,另一个int变量负责检测输入的数字是否为999。您有两个同名的int变量。您需要更改另一个是因为您有一个int变量用于输入,该变量将接受用户分配的号码,另一个int变量负责检测输入的号码是否为999。除了其他答案外,您还可以这样做,例如:
if (someCondition)
{
int num = 23;
}
else
{
int num = 12;
}
但是你不能这样做:
int num = 12;
if(someCondition)
{
int num = 23;
}
因为所有变量都有自己的作用域,如果在外部作用域中定义变量,则无法在内部作用域中定义具有相同名称的新变量。因此,如果只想更新变量的值,则无需再次声明,只需使用简单的赋值。有关详细信息,请参阅文档。回答,你可以这样做,例如:
if (someCondition)
{
int num = 23;
}
else
{
int num = 12;
}
但是你不能这样做:
int num = 12;
if(someCondition)
{
int num = 23;
}
因为所有变量都有自己的作用域,如果在外部作用域中定义变量,则无法在内部作用域中定义具有相同名称的新变量。因此,如果只想更新变量的值,则无需再次声明,只需使用简单赋值。有关详细信息,请参阅文档。只需删除int即可第二个num
double声明前面的code>和使用单位化变量num…..在第一行num
变量应该初始化为某个值才能使用。即使这不是问题,我想编译器也会抱怨只需从第二个前面删除int
e> num
double declaration…,以及单位化变量num的使用…。在第1行中,num
变量应该先初始化为某个值,然后才能使用。即使这不是问题,我想编译器也会抱怨希望它们是一样的。@TomCarter,你希望它们是一样的吗?我不明白t、 这似乎表明您希望num
始终为0。@paqogomez我想他的意思是他希望每次通过循环重新分配它,这更有意义。@TomCarter,如果您将int
放在变量名前面,您就是在重新定义变量。您不想重新声明,您只想分配val来自输入的ue。@Antonio在注释中提出了一个很好的观点。第一个注释最初需要设置为0。但我希望它们是相同的。@TomCarter,你希望它们是相同的吗?我不明白。这似乎表明你希望num
始终为0。@paqogomez我想他是说每次都要重新分配它通过循环,这更有意义。@TomCarter,如果您在变量名前加上int
,您就是在重新声明变量。您不想重新声明,只想从输入中赋值。@Antonio在注释中提出了一个很好的观点。第一个变量最初需要设置为0。