2017-10-12 19 views
0

我正在學習如何執行多維數組,並且在嘗試填充數組時遇到此引用錯誤。有人有主意嗎?多維數組對象引用未設置爲對象的實例

public static string[][] itemLines; 


    public static void readTxtFile() 
    { 
     try 
     { 
      string[] lines = new string[420]; 

      using (StreamReader sr = new StreamReader(TextFileDirectory.fileDirectoryThree)) 
      { 
       int counter = 0; 
       while (!sr.EndOfStream) 
       { 
        lines[counter] = sr.ReadLine(); //All lines are in an array index 
        counter++; 
       } 
      } 

      for (var i = 0; i < lines.Length; i++) 
      { 
       itemLines[i] = lines[i].Split('Ü'); //All lines are in multiplexed array 
       Console.WriteLine("Line " + i + "'s first value is: " + itemLines[i][0]);   
      } 

      } 
     }  
     catch (Exception e) 
     { 
      MessageBox.Show(e.ToString()); 
     } 
    } 

這是踢我的屁股。我似乎無法弄清楚這一點。

編輯:我找到了答案。我必須有一個計數器變量,並用它正確地聲明數組。

+0

這行做u得到錯誤? –

+0

itemLines [i] = lines [i] .Split('Ü'); //所有行都以複用數組形式 – randomnessthatsfunny

+0

如果'lines [i]'爲空,那麼'Split'方法可能會拋出NRE。根據'StreamReader'讀取的文件內容,可能有空字符串。 –

回答

-1

首先,你需要初始化數組

itemLines=new string[10][]; 

那麼這個錯誤會出去

你會在這一行取得錯誤也

Console.WriteLine("Line " + i + "'s first value is: " + itemLines[i][0]); 

如果前面的語句沒有數據來拆分itemLines [i] [0]將爲空,s olve這做檢查具有特定節點上的元素使用if語句

if(itemLines[i]!=null && itemLines[i].Length>0) 
Console.WriteLine("Line " + i + "'s first value is: " + itemLines[i][0]); 
+0

之外聲明使用和使用計數器之外的計數器,這仍然會拋出空指針。 itemLines仍然爲空 –

1

數組是一個對象。所有對象都需要初始化。您在開始public static string[][] itemLines創建的對象從未初始化。您已經創建了一個二維數組,它是一個數組數組。 itemLines[i] = ..訪問數組itemLines對象(它又是數組陣列)的i元素。換句話說,你在做什麼等於這個:

int[] i; 
i[0] = 8; 

以上將無法正常工作,因爲我從來沒有初始化。

樣品初始化:

string[][] myArr = new string[9][]; 
string[][] myArr2 = new string[9][8]; 
相關問題