Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou tendo problemas com esse codigo, está dando esses erros....
C:\Documents and Settings\Instrutor\Desktop>javac *.java
C:\Documents and Settings\Instrutor\Desktop>java bellmanFord entrada.txt A saida.txt
1
4
4
AException in thread "main" java.lang.NumberFormatException: For input string: "
A"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at bellmanFord.inicializaGrafo(bellmanFord.java:25)
at bellmanFord.bF(bellmanFord.java:52)
arquivo de entrada.txt
4
4
A,B,C,D.
A,B,3.
A,C,4.
B,C,5.
C,D,-2.
a letra "A" seria um certa origem passada... e o saida.txt eh onde ficará o resultado do menor caminho...
import java.io.*;public class bellmanFord { static int nVertices, nArestas, matriz[][],nlinha=1,posicao,d[],pred[]; static char vertices[]; static String linha=""; static String texto= ""; static int posicaoVertice(char v) { for(int i=0; i<nVertices; i++) { if(vertices[i] == v) { return i; } } return -1; } static void inicializaGrafo(String posicao) { int p = Integer.parseInt(posicao); d = new int[nVertices]; pred = new int[nVertices]; for(int i=0;i<nVertices;i++) { d[i] = 999999; pred[i] = -9; } d[p] = 0; } static void relax(int u, int v,int peso) { if(d[v] > d[u] + peso) { d[v] = d[u] + peso; pred[v] = u; } } static void bF(char vertices[], int m[][],String origem) { inicializaGrafo(origem); for(int i =0; i < nVertices; i++) { for(int j = 0; j < nVertices; j++) { if(m[i][j]!=0) relax(i,j,m[i][j]); } } } private static void MontaMatriz(String entrada1) { File entrada = new File(entrada1); try { FileReader ler = new FileReader(entrada); BufferedReader lendo = new BufferedReader(ler); linha = lendo.readLine(); while(linha!= null) { switch(nlinha) { case 1: int espaco=linha.lastIndexOf(" "); String aux=linha; while(espaco!=-1){ System.out.println(aux.lastIndexOf(" ")); aux = aux.substring(0,espaco); espaco=aux.lastIndexOf(" "); } nVertices = Integer.parseInt(aux); matriz = new int[nVertices][nVertices]; vertices = new char[nVertices]; System.out.println(nVertices); break; case 2: nArestas = Integer.parseInt(linha); System.out.println(nArestas); break; case 3: posicao = 0; //posicao dentro do arquivo char c = linha.charAt(posicao); //pega o caracter dentro do arquivo int posv = 0;//posicao dentro do vetor de char vertices while(c!='.') { if(c==',') { posicao++; c = linha.charAt(posicao); continue; } else { vertices[posv]= c; posv++; posicao++; c = linha.charAt(posicao); } } break; default: int pos = 4; //posicao dentro do arquivo; c = linha.charAt(pos); String peso=""; while(c != '.') { c = linha.charAt(pos); if(c=='.') break; peso += c; pos++; } matriz[posicaoVertice(linha.charAt(0))][posicaoVertice(linha.charAt(2))] = Integer.parseInt(peso); pos++; } //switch linha = lendo.readLine(); nlinha++; } //while ler.close(); lendo.close(); } catch (IOException e) { e.printStackTrace(); } } static void escreveNoArquivo(String saida,String or) { try { FileWriter writer = new FileWriter(saida); PrintWriter output = new PrintWriter(writer); String s = ImprimeArestas(or); output.close(); } catch (IOException e) { e.printStackTrace(); } } static String ImprimeArestas(String origem) { String arestas=""; for(int k=0; k<nVertices;k++) { if(d[k]==999999) { arestas =vertices[k]+","+"+inf"+"."; } else { arestas = vertices[k]+","+d[k]+"."; } if(pred[k]==-9) { arestas = origem+","+arestas; } else { while(pred[k]!=-9) { arestas = vertices[pred[k]]+","+arestas; k=pred[k]; } } } return arestas; } public static void main(String[] args) { // TODO Auto-generated method stub MontaMatriz(args[0]); System.out.print(args[1]); bF(vertices,matriz,args[1]); escreveNoArquivo(args[2],args[1]); } }
Carregando comentários...