我有以下程序:
number
当我到达比较部分时,我得到:
错误1当前上下文中不存在名称“a”
错误2当前上下文中不存在名称“b”
为什么会这样?
我的第二次尝试更改了代码...从语句范围声明数组:
bool boolFlag=true;
uint length;
Console.WriteLine("Give me the length of array a:");
if (boolFlag=UInt32.TryParse(Console.ReadLine(), out length))
{
int[] a = new int[length];
Console.WriteLine("Give me {0} int numbers for array a[] :", a.Length);
for (int i = 0; i < a.Length; i++)
{
if (boolFlag = Int32.TryParse(Console.ReadLine(), out a[i]))
{
continue;
}
else
{
Console.WriteLine("Parsing at Index a[{0}] failed.", i);
}
}
}
else
{
Console.WriteLine("Could not parse length.");
}
Console.WriteLine("Give me the length of array b:");
if (boolFlag = UInt32.TryParse(Console.ReadLine(), out length))
{
int[] b = new int[length];
Console.WriteLine("Give me {0} int numbers for array b[] :", b.Length);
for (int i = 0; i < b.Length; i++)
{
if (boolFlag = Int32.TryParse(Console.ReadLine(), out b[i]))
{
continue;
}
else
{
Console.WriteLine("Parsing at Index b[{0}] failed.", i);
}
}
}
else
{
Console.WriteLine("Could not parse length.");
}
if (a.Length==b.Length)
//{
// Console.WriteLine("a and b have equal Length");
// for (int i = 0; i < a.Length; i++)
// {
// if (a[i]==b[i])
// {
// boolFlag = true;
// continue;
// }
// else
// {
// Console.WriteLine("a[{0}] != b[{0}]", i);
// }
// }
//}
//else
//{
// Console.WriteLine("The arrays don`t have equal length");
//}
Console.ReadLine();
现在我明白了:
错误1使用未分配的局部变量'b'
错误2使用未分配的局部变量'a'
答案 0 :(得分:2)
因为您在其范围之外使用a
和b
。将其声明移至代码的开头并将其分配给null
。请注意,您可能需要考虑在用户输入错误长度时停止执行。显示错误消息后放置return;
。
另外,请考虑查看有关变量范围的this有用文章。
答案 1 :(得分:1)
您需要在ifs之外声明a和b数组,即使您在其中分配值也是如此。所以移动int [] a = new int [0];和int [] b = new int [0];在代码的开头并将if更改为if(a.length&gt; 0&amp;&amp; b.length&gt; 0&amp;&amp; a.length == b.length)。