C# 索引超出数组文件的边界
当我运行代码并输入一个输入时,我的代码抛出一个异常 数组边界外的索引 这是我的密码C# 索引超出数组文件的边界,c#,C#,当我运行代码并输入一个输入时,我的代码抛出一个异常 数组边界外的索引 这是我的密码 public static void ShowDiscription() { Console.WriteLine("Enter Course ID: "); string ReqCourseID = Console.ReadLine(); Console.WriteLine(); if (Program
public static void ShowDiscription()
{
Console.WriteLine("Enter Course ID: ");
string ReqCourseID = Console.ReadLine();
Console.WriteLine();
if (Program.AllCourses.ContainsKey(ReqCourseID))
{
FileStream FS = new FileStream("Description.txt", FileMode.Open);
StreamReader SR = new StreamReader(FS);
while (SR.Peek() != -1)
{
string z = SR.ReadLine();
String[] Fields;
Fields = z.Split('@');
string courseName = Fields[0];
string coursedescription = Fields[1];
if (ReqCourseID.CompareTo(Fields[0]) == 0)
{
Console.WriteLine(Fields[1]);
SR.Close();
return;
}
}
}
else {
Console.WriteLine("Entered Course ID is not found! press any key to continue");
}
}
我不知道有什么问题
该文件有一个delimter@分隔主题代码及其描述。
如果description.txt文件太大,是否会有所不同?
关于您从不初始化阵列
int count; //number of indices that your array will contain.
string [] Fields = new string[count];
如果您不知道将有多少索引,请使用列表
:
List<string> Fields = new List<string>();
string courseName = "Programming";
Fields.Add(courseName);
列表字段=新列表();
字符串courseName=“编程”;
字段。添加(courseName);
使用断点,逐步检查代码,找出与预期不同的地方。不,那不是我,那不是java lol@geofoverfield我知道编程语言的差异。我将其标记为重复,因为索引越界在任何语言中都是相同的。我用6种语言编写,数组基本上都是一样的。而且它不必是你的帖子就能复制。。。不管怎样,请检查下面的答案。@GeoffOverfield将问题标记为结束,然后回答该问题会发出混合信号。结束一个问题会阻止其他人回答-所以你也不应该发布答案。谢谢Rob。很高兴知道信号警察今天和我们在一起。我标记了它,因为它是重复的。你可能会在一瞬间找到500篇关于索引超出堆栈溢出范围的帖子,更不用说谷歌了。。。显然他不会去找他们,所以我还是给了他一个答案。下一次,我会和你确认一下。听起来不错?添加的字符串[]字段=新字符串[2];同样的错误放在一个断点,看看它在哪里超出了界限。你可以用任何你喜欢的值初始化它,但是string.Split返回一个数组,代码将string Split的返回赋值给数组变量,这样初始化的维度就丢失了。问题是:其中一行没有两个字段。也许最后一行是空行(经常发生)