2016-11-14 67 views
0

我想寫一個黃金探礦計劃,採用二維數組形式的初始數據地圖,然後產生一個地圖,所有可能的黃金標記的地方它。計算平均值拋出一個「System.IndexOutOfRangeException」異常

但是,在計算平均值以確定是否標記探礦點時,我得到一個「System.IndexOutOfRangeException」異常,並且程序中斷。我將如何去解決這個問題?感謝您提前提供任何幫助。

for (int i = 1; i < nRows; i++) 
     { 
      for (int j = 1; j < nCols - 1; j++) 
      { 
       //it is at the line below where the program breaks 
       double average = (data[i - 1, j] + data[i + 1, j] + data[i, j - 1] + data[i, j + 1])/4; 


       if (data[i, j] > average) 
       { 
        map[i, j] = "*"; 
       } 
      } 
     } 
+0

確定標籤C適合於這個問題嗎? C沒有例外 –

+0

是的,那是我的錯,仍然習慣美式鍵盤,所以我按了回車鍵,認爲我正在打散散列鍵。 – CuriousLekgolo

+0

當位於外部循環末尾的'i == nRows - 1'時,data [i + 1,j]'很可能超出範圍。 – deamentiaemundi

回答

2

你走出了你的2D陣列的邊界。因此,改變你的這部分代碼:

for (int i = 1; i < nRows; i++) 
    { 
     for (int j = 1; j < nCols - 1; j++) 

for (int i = 1; i < nRows - 2; i++)     // NOT from 0 to nRows - 1 
    { 
     for (int j = 1; j < nCols - 2; j++)   // NOT from 0 to nCols - 1 

所以你忽略的邊界。

+0

你是對的。謝謝! – CuriousLekgolo