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结果矩阵的总字符串中转换总整数

所以我为每个数组和矩阵设置了正确的尺寸,但我经常收到相同的错误。我不明白为什么。可以请某人帮助注意到错误,因为我看不到它。

IndexOutOfRangeException C#

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 开始。