我正在研究在最小生成树上实现Kruskal算法的程序。我把它作为我的Kruskal.java文件中的主要方法。Java中的数组索引问题
public static void main(String[] args) {
In in;
in = new In(args[0]);
EdgeWeightedGraph G = new EdgeWeightedGraph(in);
Kruskal mst = new Kruskal(G);
for (Edge e : mst.edges()) {
StdOut.println(e);
}
StdOut.printf("%.5f\n", mst.weight());
}
我遇到的问题是,当我尝试运行该程序时,我收到一个数组越界异常。异常源自
in = new In(args[0]);
line。我知道,当简单地说,当程序试图向数组中加载更多项目时,会出现数组越界异常。这最终导致它“走出界限”。在下面的主要方法中,EdgeWeightGraph引用程序中的另一个类EdgeWeightGraph.java。我相信它正从EdgeWeightedGraph类中填充,但我不完全确定。有关如何解决这个数组超出界限异常的任何建议?
编辑:这是我使用的In.java文件的链接:http://algs4.cs.princeton.edu/12oop/In.java.html这里是我的克鲁斯卡类,从上面的代码来自http://algs4.cs.princeton.edu/43mst/KruskalMST.java.html
不,当尝试访问数组中不存在的元素时,会发生IOoBE。你通过命令行参数吗? – ChiefTwoPencils
发布In类的代码以及堆栈跟踪。当您尝试访问不在数组中的索引时,会发生索引超出界限。即当数组长度为10时的索引10,索引10是第11个元素。 –
我没有传递任何命令行参数 – user3068177