2016-12-04 58 views
-1
  1. 異常在線convertedMatrix[temp] = matrix[i,j];
  2. 確切的錯誤:

    IndexOutOfRangeException: Array index is out of range. System.Text.StringBuilder.set_Chars (Int32 index, Char value) (at /System.Text/StringBuilder.cs:line number)IndexOutOfRangeException在使用StringBuilder嵌套for循環在c#

  3. 下面是代碼(在C#):

    public const int size = 4; 
    public System.Text.StringBuilder convertedMatrix = new System.Text.StringBuilder(size * size); 
    public char[,] matrix = new char[,]{'i','s','e','m','r','v','u','n','t','o','d','a'}; 
    
    public void Generate() { 
        for(int i = 0; i < size; i++) { 
         convertedMatrix.Append(" "); 
        } 
    
        int temp = 0; 
    
        for(int i = 0; i < size; i++) { 
         for(int j = 0; j < size; j++) { 
          convertedMatrix[temp] = matrix[i,j]; 
          temp += 1; 
         } 
        } 
    } 
    
+2

CS0846嵌套數組初始化器預計 – Steve

+2

這甚至不編譯..請發佈您的實際代碼。 – user3185569

+2

這不能是你的代碼,你用一維數組初始化一個多維數組... –

回答

2

convertedMatrix具有i字符。在該行中,如果出現錯誤,temp可以達到比i更多的(i-1)*(j-1)。

您可能想要增加convertedMatrix中的字符數。

+0

以下是完整的代碼,如果你想提供一個解決方案: [鏈接](http://pastebin.com/SCmwVcHH) 錯誤是在無行159. 謝謝! – asethi

0

對不起傢伙調試它。由於@yper表示convertedMatrix字符較少。所以,錯誤是在行:

for(int i = 0; i < size; i++) { 
    wordsLength[i] = 0; 
    convertedMatrix.Append(" "); 
} 

相反,它應該是:

for(int i = 0; i < size * size; i++) { 
    wordsLength[i] = 0; 
    convertedMatrix.Append(" "); 
} 

謝謝你們!