【问题标题】:Out of index exception超出索引异常
【发布时间】:2017-09-10 02:54:33
【问题描述】:

对不起,如果有一个简单的解决方案,已经尝试了几个小时,我似乎无法找到代码的问题,它可能有什么问题?

 public static void ShortestPath(int[,] waypoint, int source, int verticesCount) 
        {
            source = 0;
            waypoint = new int[verticesCount, verticesCount];
            int[] distance = new int[verticesCount];
            int[] previous = new int[verticesCount];
            PriorityQueue<int> priorityqueue = new PriorityQueue<int>();

            for (int i = 0; i < verticesCount; i++)
            {
                for (int l = 0; l < verticesCount; l++)
                {
                    if (waypoint[i, l] != 0)
                    {
                        priorityqueue.Enqueue(i, waypoint[i, l]);
                    }
                }
            }

            while (!priorityqueue.empty() || priorityqueue != null)
            {
                int o = priorityqueue.dequeue_min();

                for (int v = 0; v < verticesCount; ++v)
                {
                    previous[v] = 0;
                    MinimumDistance(distance, verticesCount);     
                    if (waypoint[o, v] != 0)
                    {
                        if (distance[o] + waypoint[o, v] < distance[v])
                            distance[v] = distance[o] + waypoint[o, v];
                        previous[v] = o;
                        priorityqueue.Enqueue(o, distance[v]);

                    }
                      Print(distance[], verticesCount);
                }
            }

【问题讨论】:

  • 单步执行时,异常是从哪里抛出的?
  • 错误发生在哪一行?
  • 请发布实际错误。
  • 另外,PriorityQueue 类的实现在哪里?
  • 你知道你可以问一个数组有多大吗?我敢打赌,您的航点数组的尺寸不是 verticesCount

标签: c# arrays indexing


【解决方案1】:

我相信您的问题在于您使用 ++v 而不是 v++while 循环中的 if

代码应该是:

...
for (int v = 0; v < verticesCount; v++)
...

【讨论】:

    猜你喜欢
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 2014-11-21
    • 2023-04-10
    相关资源
    最近更新 更多