Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IndexOutOfRangeException C#_C#_Matrix_Indexoutofboundsexception - Fatal编程技术网

IndexOutOfRangeException C#

IndexOutOfRangeException C#,c#,matrix,indexoutofboundsexception,C#,Matrix,Indexoutofboundsexception,我的目标是做一个三重for循环来乘以矩阵X,我输入矩阵,我必须得到矩阵^2 我得到错误“IndexOutOfRangeException”-调试以下代码时,索引超出了数组的界限: for (int i = 1; i < nodeList.Count+1; i++) { for (int j = 1; j < nodeList.Count+1; j++) {

我的目标是做一个三重for循环来乘以矩阵X,我输入矩阵,我必须得到矩阵^2

我得到错误“IndexOutOfRangeException”-调试以下代码时,索引超出了数组的界限:

 for (int i = 1; i < nodeList.Count+1; i++)
            {
                for (int j = 1; j < nodeList.Count+1; j++)
                {
                    result[i, j] = "0";

                    for (int k = 1; k < nodeList.Count+1; i++)
                    {

                        if ((matrix[i, k] != null) && (matrix[k, j] != null))
                        {
                            n1 = Convert.ToInt32(matrix[i, k]);
                            n2 = Convert.ToInt32(matrix[k, j]);
                            n3 = Convert.ToInt32(result[i, j]);

                            total = n3 + n1 * n2;
                            _total = total.ToString();

                            result[i, j] = _total;

                        }
                    }
                }
            }
for(int i=1;i
其中变量为: 1.类型为字符串[,]且维度为(节点列表+1,节点列表+1)的矩阵 2.结果是矩阵的相同类型和维数,我想把结果矩阵放在这里 3.nodelist是图中节点名称的数组 4.n1,n2,n3是int,我把矩阵中的转换int放进去 5.total是乘法运算的结果 6._total转换结果矩阵的total字符串中的total int

所以我为每个数组和矩阵设置了正确的维数,但我经常会得到相同的误差。我不明白为什么。请大家帮忙注意一下错误,因为我看不到。

数组在C#中是基于0的——第一个元素位于位置0,而不是位置1

for (int i = 1; i < nodeList.Count+1; i++)
for(int i=1;i
。。。应该是

for (int i = 0; i < nodeList.Count; i++)
for(int i=0;i
对于k循环,您还有一个似乎是复制粘贴错误

for (int k = 1; k < nodeList.Count+1; i++)  // should be k++?
(int k=1;kfor//应该是k++?
对数组使用for循环的标准方法是

for(int x=0;x


k
循环中,当c#数组被0

索引(int k=1;kk循环中,您正在递增
i

此外,每次尝试在循环的最后一次迭代中访问矩阵时,都会出现越界错误。要么在循环中从0开始计数,要么在所有矩阵运算中加-1。例:

results[i-1, j-1] = _total;

矩阵索引从0开始。

在这里发布之前,我确信您在调试器中运行了此操作,并逐步执行,直到获得异常并检查了变量。对吗?真的吗?我整个下午都在这上面!!!我找不到错误,天哪!我相信!非常感谢我需要一双新的眼睛:D谢谢=****如果你使用了调试器并仔细检查了代码,你会立即找到答案。调试器的使用不是可选的。@abelenky是的,我有过,但我没有注意到为什么k没有增加,而是停止了。我在你的原始帖子中没有看到任何内容表明“我在调试器中观看了它,而
k
在我认为应该增加的时候没有增加”。