2012-11-12 51 views
0

朋友指數數組

我有告訴「索引數組的範圍之外」錯誤的邊界之外,我不知道Ÿ它completeting for循環,並進入循環後,因爲發生新鮮再次顯示退出循環之前的變量值。

 int[,] arrScr = new int[lstTest.Count, cnt2 + 3]; 
     string[,] arrName = new string[lstTest.Count, cnt2 + 3]; 
     int p; 

     for (i = 0; i < lstTest.Count; i++) 
     { 
      using (DataTableReader dtr3 = ds.Tables["scord_mark_table" + (i + 1).ToString()].CreateDataReader()) 
      { 
       p = 0; 
       while (dtr3.Read()) 
       { 
        arrName[i, 2 + p] = dtr3[15].ToString(); 
        for (int k = 2; k < 12; k++) 
        { 
         arrScr[i, 2 + p] += Convert.ToInt32(dtr3[k].ToString()); 
        } 
        p++; 
       } 
      } 

enter image description here

+4

無論如何,您應該在該聲明中顯示異常似乎很奇怪。您能否向我們展示您的完整代碼(作爲文本而不是圖像)? –

+1

我確定由異常消息隱藏的部分與它有關:P – nawfal

+0

它只是普通的計數索引不匹配。確保陣列中有足夠的項目。在你訪問數組之前做一些條件邏輯 – nawfal

回答

2

什麼是dtr3[12]?它會返回null
cnt2的值是多少?

+0

yest它是dtr3 [12]返回空問題。 – neo

2

變化k <= 12k < 12

如果這不是你的問題的原因,你應該重寫k <= 12k < 13,因爲這是大多數編碼器用來讀寫的約定。

+0

但那不是什麼導致這個錯誤。它只是某個數組的索引與實際計數不匹配。即使k = 13不會進入循環內部。 – nawfal

+0

我改爲k <12仍然是同樣的錯誤。 – neo

1

這意味着您的數組不包含儘可能多的元素,因爲您試圖訪問。

1

它將從k = 13退出循環,因爲k的最後一個有效值是12,然後它通過循環,執行k ++(使其成爲13)。在這一點上,它失敗的條件,因爲13> 12,這是實際退出時。

+0

但那不是什麼導致這個錯誤。它僅僅是某個數組的索引與實際計數不匹配 – nawfal