import java.util.*; import java.io.*; public class Graph{ int num = 0; String filename; Node[] nodes; Graph(String filename){ this.filename = filename; loadGraph(filename); } class Edge{ private int to; private double omomi; Edge(int to,double omomi){ this.to = to; this.omomi=omomi;} int To(){ return to; } double Omomi(){return omomi;} } class Node{ int id; ArrayList<Edge> list = new ArrayList<Edge>(); ArrayList<Edge> list2 = new ArrayList<Edge>(); Node(int id){ this.id = id; } void addToList(int nid,double omomi){ list.add(new Edge(nid,omomi)); } ArrayList<Edge> getList(){ return list; } ArrayList<Edge> getList2(){ return list2; } } void loadGraph(String filename){ this.nodes = new Node[1000]; try{ FileReader fr = new FileReader(filename); BufferedReader br = new BufferedReader(fr); String line; while((line = br.readLine()) != null){ String[] node = line.split(":"); int nOde = Integer.parseInt(node[0]); nodes[num] = new Node(nOde); String[] edge = node[1].split(","); for(int h=0;h<edge.length;h++){ String[] aaa=edge[h].split("@"); int y = Integer.parseInt(aaa[0]); double z = Double.parseDouble(aaa[1]); nodes[num].addToList(y,z); } num++; } }catch(IOException e){ return ; } } void printGraph(){ for(int i = 0;i < num;i++){ System.out.print(i+":"); for(int j = 0;j < nodes[i].getList().size();j++){ System.out.print(nodes[i].getList().get(j).To()+"@"+nodes[i].getList2().get(j).Omomi()); if(j < nodes[i].getList().size() - 1){ System.out.print(","); } } System.out.println(); } } } class GraphTester{ public static void main(String[] args){ String filename = args[0]; Graph graph = new Graph(filename); graph.printGraph(); } }
このプログラムをつかって
java GraphTester a.txtで(以下a.txtの中身です)
0:1@2.0,3@6.0,4@1.0 1:6@3.0
を
0:1@2.0,3@6.0,4@1.0 1:6@3.0
と元通り表示させたいのですが
C:\Users\user\Desktop>java GraphTester a.txt 0:Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size : 0 at java.util.ArrayList.rangeCheck(Unknown Source) at java.util.ArrayList.get(Unknown Source) at Graph.printGraph(Graph.java:69) at GraphTester.main(Graph.java:83)
が出てきてできません。
どこを直せばできるようになりますか?
コードが読みづらいです。ブロックごとに字下げしてください。