This question already has answers here:
c# switch problem
(8个答案)
7年前关闭。
我收到以下错误。使用未分配的局部变量markduplicate。我不明白为什么?该程序在数组中找到重复项。我一直在努力弄清楚,我感觉我是如此接近。谢谢您的帮助。
}
至
在声明中。
(8个答案)
7年前关闭。
我收到以下错误。使用未分配的局部变量markduplicate。我不明白为什么?该程序在数组中找到重复项。我一直在努力弄清楚,我感觉我是如此接近。谢谢您的帮助。
using System;
class duplicate
{
static void Main()
{
const int Array_Size = 5;
int [] number = new int [Array_Size];
int i;
for ( i = 0; i < Array_Size; i++)
{
Console.Write("Element " + i + ": ");
number[i] = Int32.Parse(Console.ReadLine());
if (number[i] < 9 || number[i] > 101)
{
Console.WriteLine("Enter Number between 10 - 100");
number[i] = Int32.Parse(Console.ReadLine());
}
}
bool markduplicate;
for (i = 0; i < Array_Size; i++)
{
for (int j = 0; j < Array_Size; j++)
{
if (i != j)
{
if (number[j] == number[i])
{
markduplicate = true;
}
}
if (markduplicate != true)
{
Console.WriteLine("Element " + i + " " + number[i]);
}
}
}
}
}
最佳答案
这是因为C#的代码分析器在对markduplicate
的值进行赋值之前引用了i
的值时,检测到程序中存在路径。具体来说,这将在嵌套循环的第一个迭代期间发生,当j
和if (i != j)
均为零时:不会执行包含分配的markduplicate
块,因此if
的值将在接下来的ojit_code语句。
要解决此问题,请更改
bool markduplicate;
至
bool markduplicate = false;
在声明中。
10-04 20:40