2016-12-27 52 views
-3

當我運行我的代碼,並輸入輸入我的代碼拋出一個異常 指數陣列 這裏的外邊界是我的代碼指數成分股範圍

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"); 

       } 

     } 

我不知道什麼問題 文件有一個分隔符,用於分隔主題代碼及其描述。 它不同,如果description.txt文件太大? 問候

+1

使用斷點,並一步步跟蹤代碼,並找出比預期的有什麼不同。 – eurotrash

+0

沒有那不是我和那C#不是Java笑@GeoffOverfield –

+0

我知道在編程語言的差異。我將它標記爲重複的,因爲索引越界在任何語言中都是相同的。我用6種語言編寫,數組總是基本相同。 _它不一定是你的帖子是一個重複的......無論如何,請檢查下面的答案。 –

回答

0

你永遠不初始化數組。

int count; //number of indices that your array will contain. 
string [] Fields = new string[count]; 

如果你不知道你有多少指標有,使用List<string>代替:

List<string> Fields = new List<string>(); 
string courseName = "Programming"; 
Fields.Add(courseName); 
+0

添加了字符串[] Fields = new string [2]; 和同樣的錯誤 –

+0

放在一個斷點,看看它出界的地方。 –

+1

你可以用你喜歡的任何值初始化它,但是string.Split返回一個數組,並且代碼將字符串split的返回值賦給數組變量,所以初始化的維數將會丟失。問題是:其中一行沒有兩個字段。也許最後一行是空行(發生很多) – Steve