FelipeUS 0 Denunciar post Postado Julho 8, 2006 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]); } } Compartilhar este post Link para o post Compartilhar em outros sites
Robex 171 0 Denunciar post Postado Agosto 9, 2006 você faz Ciencia da Computação?esse semestre terei Grafos e também vou ter que implementar alguns algoritimos... em fim...Vamos ao que intereça... você ja tentou acrescentar junto com o io oimport java.io.*;import java.swing.*;Acho que eh isso! Compartilhar este post Link para o post Compartilhar em outros sites
abcd_man 0 Denunciar post Postado Agosto 19, 2006 Pelo o que eu vi na sua linha args[1] é a string "entrada.txt" que na main você passa para o método bFbF(vertices,matriz,args[1]);Nesse método você passa para inicializaGrafoinicializaGrafo(origem);E nesse método você tenta passar a palavra "entrada.txt" para inteiro, o que vai dar um erro obviamente. Nem recomendo usar try catch, verifique novamente a lógica do seu programa porque tem alguma coisa errada Compartilhar este post Link para o post Compartilhar em outros sites