IndexOutOfRangeException C#
我的目标是做一个三重for循环来乘以矩阵X,我输入矩阵,我必须得到矩阵^2 我得到错误“IndexOutOfRangeException”-调试以下代码时,索引超出了数组的界限: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 (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
在我认为应该增加的时候没有增加”。