IndexOutOfRangeException C#
本文关键字:IndexOutOfRangeException | 更新日期: 2023-09-27 18:36:40
我的目标是制作一个三重 for 循环来乘以矩阵 X 矩阵,我输入矩阵,我必须得到矩阵^2。
我收到错误"索引超出范围异常" - 当我调试以下代码时,索引超出了数组的范围:
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;
}
}
}
}
其中变量为:1. 类型为 String[,] 且维度为 (节点列表+1,节点列表+1) 的矩阵2.结果是矩阵的相同类型和维度,我想在其中放置结果矩阵3.nodelist是我在图中拥有的节点名称的数组4. n1,n2,n3 是 int,我把矩阵中的转换 int 放进去5.总计是乘法运算的结果6._total结果矩阵的总字符串中转换总整数
所以我为每个数组和矩阵设置了正确的尺寸,但我经常收到相同的错误。我不明白为什么。可以请某人帮助注意到错误,因为我看不到它。
在k
循环中,您正在递增i
。
for (int k = 1; k <nodeList.Count+1;>
喜欢这个:
for (int k = 1; k
数组在 C# 中从 0 开始 -- 第一个元素位于位置 0 而不是位置 1。
for (int i = 1; i < nodeList.Count+1; i++)
。应该是...
for (int i = 0; i < nodeList.Count; i++)
您还遇到了 k 循环的复制粘贴错误。
for (int k = 1; k < nodeList.Count+1; i++) // should be k++?
将
for 循环与数组一起使用的标准方法是使用
for(int x= 0; x < arry.count ;x++)
使用 1 和 +1 作为条件将确保您在 C# 数组按 0 编制索引时获得索引
如前所述,您在 K 循环中递增 i。
此外,每次尝试访问循环最后一次迭代上的矩阵时,您都会收到越界错误。 要么你需要在循环中从 0 到 Count,要么你需要在所有矩阵运算中输入 -1。前任:
results[i-1, j-1] = _total;
矩阵索引从 0 开始。