Java中的数组索引问题

时间:2015-11-05 23:45:06

标签: java arrays indexoutofboundsexception

我正在研究一个在最小生成树上实现Kruskal算法的程序。我把它作为我的Kruskal.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]);

线。我知道,当简化地说,当程序试图将更多项加载到数组中而不是有空间时,就会发生数组超出范围异常。这最终导致它“超出界限”。在下面的main方法中,EdgeWeightGraph引用了程序中的另一个类EdgeWeightGraph.java。我相信它正在从EdgeWeightedGraph类填充,但我不完全确定。关于如何修复此数组超出范围异常的任何建议?

编辑:这是我正在使用的In.java文件的链接:http://algs4.cs.princeton.edu/12oop/In.java.html这里是我的Kruskal类,上面的代码来自http://algs4.cs.princeton.edu/43mst/KruskalMST.java.html

1 个答案:

答案 0 :(得分:2)

错误只是发生,因为在运行给定类的main方法时没有传递任何参数。

所以当jre运行以下语句时

in = new In(args[0]);

它在{0}位置的args数组中没有传递任何参数;这导致了这个错误。

传递参数,你不再有这个错误了。

要了解如何正确地将参数传递给main方法,请参阅java documentation