Как решить проблему в моем коде DFS, написанном на java?
выход :
Enter Vertex no : 4 How many edge you want to enter : 3 Enter edge : 0 1 Enter edge : 0 2 Enter edge : 1 3 Final Visited Order : Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0 at DFS.DFS_Visit(DFS.java:58) at DFS.traverse(DFS.java:53) at DFS.main(DFS.java:115)
Что я уже пробовал:
//Мой код --
import java.util.*; public class DFS { static int ver; static int edg; static int time; static int u; static int source; static int destination; static final int white=0,grey=1,black=2; static int prev[]=new int[ver]; static int color[]=new int[ver]; static int d[]=new int[ver]; static int f[]=new int[ver]; int vertex[]=new int[ver]; static LinkedList<integer>list[]; @SuppressWarnings({ "unchecked", "static-access" }) public DFS(int ver) { this.ver = ver; list = new LinkedList[ver]; for (int i = 0; i <ver; i++)="" { ="" list[i]="new" linkedlist<="">(); } } public void addEdge(int source,int destination) { list[source].addFirst(destination); } @SuppressWarnings("unused") public void traverse(){ int prev[]=new int[ver]; int color[]=new int[ver]; int d[]=new int[ver]; int f[]=new int[ver]; int time; for(u=0;u<ver;u++) { ="" color[u]="white; " prev[u]="-1; " f[u]="Integer.MAX_VALUE; " d[u]="Integer.MAX_VALUE; " } ="" time="0; " ="" for(u="0;u<ver;u++)" if(color[u]="=white) " dfs_visit(u); ="" public="" void="" dfs_visit(int="" u)="" iterator<integer="">ver=list[u].listIterator(); while(ver.hasNext()) { int v=ver.next(); if(color[v]==white) { prev[v]=u; DFS_Visit(v); } } color[u]=black; time=time+1; f[u]=time; System.out.println(u+" "); } @SuppressWarnings("resource") public static void main(String[] args) { System.out.println("Enter Vertex no : "); Scanner in1=new Scanner(System.in); ver=in1.nextInt(); System.out.println("How many edge you want to enter : "); Scanner number=new Scanner(System.in); edg=number.nextInt(); DFS graph=new DFS(ver); for(int e=0;e
Richard MacCutchan
Не объявляйте поля в вашем классе как static
, вы получите совершенно неправильные ответы, если создадите несколько объектов DFS.