在使用C#中的loops中使用StringBuilder时,请使用indexoutofrangeException


  1. convertedMatrix[temp] = matrix[i,j];
  2. 中获得异常
  3. 确切错误:

    indexoutofrangeException:数组索引超出范围。 System.Text.StringBuilder.set_chars(INT32索引,char值)(at/system.text/stringbuilder.cs:line编号)

  4. 这是代码(在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;
            }   
        }
    }
    

convertedMatrix具有i字符。在线您会遇到错误,temp可以达到(i-1)*(J-1),它比i。

多。

您可能想增加convertedMatrix中字符的数量。

对不起,家伙们调试了它。正如@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(" ");
}

谢谢大家!

相关内容

  • 没有找到相关文章

最新更新