System.ArgumentOutOfRangeException,但我不确定它来自哪里

时间:2014-05-02 05:36:59

标签: c# dijkstra

如果我打破了任何堆栈溢出问题规则,我会事先道歉,我试着确保我所做的一切都被允许,但我可能错过了一些东西。这是我第一次真正提出问题。

我刚刚完成了一个使用Dijkstra算法的程序来查找一个站到所有其他站之间的最短时间。我的程序运行,但是当我输入我的起点和终点时,我得到了这些错误:

我明白错误是什么,我只是不确定它发生在哪里。

System.ArgumentOutOfRangeException

中发生了mscorlib.dll类型的未处理异常

其他信息:

Index was out of range. Must be non-negative and less than the size of the collection.

我不想用大量的代码轰炸所有人......所以我在链接到我所拥有的Dropbox位置:https://www.dropbox.com/sh/z7an3eho1lkm1h9/_0bm5taT31

再一次,如果我错过了一条规则并且我打破它,我很抱歉。如果我是,请告诉我,我会尝试以适当的方式重新发布问题。

2 个答案:

答案 0 :(得分:1)

使用Visual Studio,您可以告诉调试器在抛出异常时中断:

http://msdn.microsoft.com/en-us/library/d14azbfh.aspx

使用这种技术,您应该能够找到根本原因。

答案 1 :(得分:0)

您必须在代码中添加两个条件,如下所述。

 if(Subway.Count>0)
            shortest.Add(Subway[s2]);

 int mins=0;
             if(Subway.Count>0)
             mins = Subway[s2].cost;

你的地铁列表是空的,你仍然发现它的项目显示它将通过例外。