2013-02-13 75 views
0

此處爲第一個計時器。 StackOverflow幫助我對數組和列表進行了一些處理,但是我遇到了一個問題,我在別處看不到答案。使用For循環添加到列表(ArgumentOutOfRangeException)時出錯

目標:採用現有的多維數組,讀取每一行,如果它以正確的標識符開頭,則將該行拖入列表中。每個列表都成爲我列表的一部分。如果我使用newGrid [0] .Add(CSVReader.grid [x,y]);如果我使用newGrid [0] .Add(CSVReader.grid [x,y]);低於它運行良好。但是如果我使用[y]而不是[0],我會得到一個異常。在我得到異常的地方,y = 0?我想用for循環的y來使每行從數組中拉出一個新列表。在

public void processCSV() { 

    List<List<string>> newGrid = new List<List<string>>(); 

    for (int y = 0; y < CSVReader.grid.GetUpperBound(1); y++) { 
     if (CSVReader.grid[0,y] == "T1") { 
      newGrid.Add(new List<string>()); 
      for (int x = 0; x < CSVReader.grid.GetUpperBound(0); x++) { 
       newGrid[y].Add(CSVReader.grid[x,y]);  
      } 
      foreach(string item in newGrid[y]) {  
       print(item); 
      } 

     } 
    } 
} 
+0

因爲newGrid.Add(新列表());在IF語句中,y不一定對應於你列表中的項目數量。這可能是你的問題嗎? – 2013-02-13 06:24:59

+0

就是這樣。 – 2013-02-13 06:33:50

回答

2

行號的newGrid不匹配CSVReader.grid行號,因爲你只能複製源陣列的一些線路。

而不是重新使用y使用單獨的變量,每當您撥打newGrid.Add或簡單地將元素添加到最後一行,在newGrid中計算行。

+0

是的,你是對的 - 謝謝!希望我可以投票,但顯然我需要先獲得一些聲望;) – 2013-02-13 06:33:27