estou com dificuldade na resolução de um exercício. para este caso abaixo, é melhor eu usar stream ou filewriter?!
Como eu pego o valor de 1 por 1? para eu poder atribuir as variáveis? Alguém me dá uma luz plz!
[quote]Escreva um programa que receba pela linha de comando o nome de um arquivo (contendo a descrição de um digrafo). O arquivo fornecido ao programa deverá ter o seguinte layout:
n m s t
u1 v1 c1
u2 v2 c2
…
um vm cm
onde n é a quantidade de vértices, m a quantidade de arcos, s é o vértice origem, t é o vértice destino, ui e vi são a origem e o destino do arco i e ci é o custo da aresta i. Por exemplo, para o digrafo abaixo, se s = 1 e t = 4, teríamos o arquivo à direita do grafo.[/quote]
public static void main(String[] args) throws IOException {
InputStream is = new FileInputStream(“arquivo.txt”);
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String result = br.readLine();
double minDistance = Double.POSITIVE_INFINITY;
System.out.println(result);
String n1 = String.valueOf(result.charAt(0));
String m1 = String.valueOf(result.charAt(2));
String s1 = String.valueOf(result.charAt(4));
String t1 = String.valueOf(result.charAt(6));
int n = Integer.parseInt(n1);
int m = Integer.parseInt(m1);
int s = Integer.parseInt(s1);
int t = Integer.parseInt(t1);
result = br.readLine();
int[][] V=new int[n+1][m+1];
while (result != null) {
int tam = result.length();
System.out.println(result);
if (tam == 5){
String x1 = String.valueOf(result.charAt(0));
String y1 = String.valueOf(result.charAt(2));
String custo = String.valueOf(result.charAt(4));
int x = Integer.valueOf(x1);
int y = Integer.valueOf(y1);
V[x][y] = Integer.parseInt(custo);
result = br.readLine();
}
else if (tam == 6){
String n2 = String.valueOf(result.charAt(4)) + String.valueOf(result.charAt(5)) ;
String x1 = String.valueOf(result.charAt(0));
String y1 = String.valueOf(result.charAt(2));
int x = Integer.valueOf(x1);
int y = Integer.valueOf(y1);
V[x][y] = Integer.parseInt(n2);
result = br.readLine();
}
else {
result = br.readLine();
}
}
br.close();
int aux = 99;
int new_s = s;
String Z = String.valueOf(t);
while(new_s != t){
for (int i=1; i<=n; i++){
if (V[new_s][n] < aux){
aux = V[new_s][n];
new_s = n;
}
}
Z += String.valueOf(new_s);
minDistance += aux;
aux = 99;
}
System.out.println("Caminho mínimo do vértice "+s+" para o vértice "+t+" : " + Z);
System.out.println("Custo:" + minDistance);
}
}[/code]
Olá colegas, o código está sem erros(de sintaxe), mas esses dois últimos sysout’s não estão sendo impressos, alguém sabe pq?
ah, eu queria fazer uma condição tipo assim if (V[new_s][n] != null), mas não posso equiparar nada com NULL na matriz, alguém tem ideia de como fazê-lo? obg