【发布时间】:2013-04-02 01:01:07
【问题描述】:
我收到以下错误。使用未分配的局部变量 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]);
}
}
}
}
}
【问题讨论】:
-
因为并非所有通过循环的路径都将值分配给
markduplicate。只需使用false? 初始化它? -
markDuplicate 在进入循环之前没有赋值。为它分配一个 False 的初始值,你应该没问题。
-
这是一个旁白,但是你声明 i 超出循环范围有什么原因吗?
-
另外,您可能需要稍微修改循环。假设您有数字 1,1 和 1。您将打印两次“Element 0 1”,然后打印两次“Element 1 1”,然后打印两次“Element 2 1”。我在外循环中声明
markduplicate,并在内循环中设置markduplicate后放置break语句。我也将打印移到外循环,并改变 if 子句的含义。 -
请edit 您的问题提供您收到的准确 错误消息,并用评论标记导致它的行。您面前有该特定信息;如果你提供它会容易得多。 :-)
标签: c# arrays compiler-errors duplicates unassigned-variable