Não estou conseguindo pegar o arquivo para incluir os caracteres numa matriz.
alguem sabe me dizer o que ocorre?
desde já agradeço
att fernando nascimento
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.LinkedList;
public class FordBellman {
public static void main(String[] args) {
new FordBellman ();
}
private static final String CAMINHO_ARQUIVO = "arquivo.txt";
private static final String DELIMITADOR_DADOS = " ";
int INF = Integer.MAX_VALUE;
int i = 0;
int j = 1;
int c = 2;
int s =0;
int atual=-1;
int linha= 0;
int vertices= 8;
int arestas= 9;
float inicio=0;
float fim=0;
int rotulo[] = new int[vertices];
int predecessor[] = new int[vertices];
int[][] matriz = new int[arestas][3];
LinkedList<Integer>lista= new LinkedList<Integer>();
boolean[] entrada = new boolean[vertices];
Calendar tempo = new GregorianCalendar();
public FordBellman(){
try {
/* Arquivo que será lido */
FileReader fr = new FileReader( CAMINHO_ARQUIVO );
BufferedReader br = new BufferedReader( fr );
while(br.ready()){
String[] corrente = (br.readLine()).split(" ");
matriz[linha][i] = Integer.parseInt(corrente[0]);
matriz[linha][j] = Integer.parseInt(corrente[1]);
matriz[linha][c] = Integer.parseInt(corrente[2]);
linha++;
}
}catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException ioe) {
ioe.printStackTrace();
}catch ( NumberFormatException nfe ) {
nfe.printStackTrace();
}
//inicialização dos rotulos que não s.
for(int x=1;x<=vertices;x++){
rotulo[x]= INF;
}
predecessor[s] = 0;
//inicializa rotulo s com 0
rotulo[s] =0;
inicio = tempo.getTimeInMillis();
while(!lista.isEmpty()){
atual = lista.removeFirst();
int comparacoes =0;
//faz varredura em todas as arestas
for(int linhav=0;linhav<arestas;linhav++){
//verifica as que tem i igual a atual linhav=linha de verificacao
if (matriz[linhav][i] == atual){
if (rotulo[matriz[linhav][j]] > (rotulo[atual] + matriz[linhav][c])){
System.out.println("alterado rotulo do vertice " + matriz[linhav][j] + " para o rotulo " + (rotulo[atual] + matriz[linhav][c]));
rotulo[matriz[linhav][j]] = rotulo[atual] + matriz[linhav][j];
predecessor[matriz[linhav][j]] = atual;
exibe();
//verifica se arco está na lista ou não. Se não estiver será adicionado ao fim dela com o método addlast
if(!(lista.contains(matriz[linhav][j]))){
if (entrada[matriz[linhav][j]]){
System.out.println("adicionado " + matriz[linhav][j] + " no início da fila.");
addLast(lista,matriz[linhav][j]);
}
}
}
}
//contador de comparacoes
comparacoes++;
}
fim= tempo.getTimeInMillis();
}
}
void exibe(){
System.out.printf("Tempo total decorrido é de:%f", fim - inicio);
System.out.print("Predecessores: ");
for(int contador=1; contador<=vertices;contador++){
System.out.print(predecessor[contador] + " ");
}
System.out.println("");
System.out.print("Rotulos: ");
for(int contador=1;contador<=vertices;contador++){
System.out.print(rotulo[contador] + " ");
}
System.out.println(".");
}
void addLast(LinkedList listaRecuperada,int x){
entrada[x] = true;
listaRecuperada.addLast(x);
}
}