Olá amigos, gostaria da ajuda de vocês para resolver um problema do curso…
preciso ler um arquivo: destino.txt
Rio de Janeiro/Guarapari/500
Rio de Janeiro/Sao Paulo/600
Guarapari/Vitoria/50
Rio de Janeiro/Vitoria/550
Vitoria/Sao Paulo/750
e salvar na saida , algo com a seguinte ordem:
Rio de Janeiro:
Guarapari 500km
Sao Paulo 600km
Vitoria 550km
MAIS PERTO Guarapari
MAIS LONGE Sao Paulo
Guarapari:
Rio de Janeiro 500km
Vitoria 50km
MAIS PERTO Vitoria
MAIS LONGE Rio de Janeiro
Porém no arquivo de texto fica tudo na mesma linha…
Alguém poderia me dizer o que estou fazendo de errado…Já olhei diversas vezes os métodos toString() , porém ainda não consegui resolver…
abaixo segue o código:
import java.util.*;
import java.io.*;
class Cidade{ //classe cidade e variaveis de instancia...
String vizinhanca;
int custo;
Cidade prox;
Cidade(String viz,int cust){ // construtor...
vizinhanca=viz;
custo=cust;
prox=null;
}
public String toString(){ //provavel local do erro...
String s=vizinhanca+"\t"+custo+" Custo em reais\n";
return s;
}
}
class No{ // classe no e variaveis de instancia...
String nome;
String maior,menor;
int maior_custo,menor_custo;
No prox;
Cidade prim;
No(String name){// construtor...
nome=name;
maior=" ";
menor=" ";
maior_custo=menor_custo=0;
prox=null;
prim=null;
}
void insere_cidade(String vizinhanca,int custo){
Cidade nova= new Cidade(vizinhanca,custo);
if (prim==null)
{prim= nova;}
else{
Cidade p=prim;
while(p.prox!=null) {
p=p.prox;
}
p.prox=nova;
}
if (maior_custo==0){
maior=menor=vizinhanca;
maior_custo=menor_custo=custo;
}
else{
if(maior_custo<custo){
maior=vizinhanca;
maior_custo=custo;
}
else if(menor_custo>custo){
menor=vizinhanca;
menor_custo=custo;
}
}
}
public String toString(){ //provavel local do erro...
String t="\n";
String s;
s=t+nome+": \n";
Cidade p=prim;
while(p != null){
s+=p.toString();
p=p.prox;
}
s=s+"Menor custo"+"\t"+menor+"\n";
s=s+"Maior custo"+"\t"+maior+"\n";
return s;
}
}
class Lista{
No prim;
Lista(){
prim=null;
}
No busca(String nome){
No p=prim;
while((p!=null) &&(!(nome.equals(p.nome)))){
p=p.prox;
}
return p;
}
void insere(String nome,String vizinhanca,int custo){
No p=busca(nome);
if(p==null){
p=new No(nome);
if(prim==null){
prim=p;
}
else{
No q=prim;
while(q.prox != null){
q=q.prox;
}
q.prox=p;
}
}
p.insere_cidade(vizinhanca, custo);
}
public String toString(){
String s=" ";
No p=prim;
while(p!=null){
s+=p.toString();
p=p.prox;
}
return s;
}
}
public class Questao {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
try{
BufferedReader in;
in = new BufferedReader(new FileReader("destino.txt"));
String s=null;
try{
Lista l=new Lista();
String vs[];
while((s=in.readLine())!=null){
vs=s.split("/");
l.insere(vs[0],vs[1], Integer.parseInt(vs[2]));
l.insere(vs[1],vs[0], Integer.parseInt(vs[2]));
}
in.close();
System.out.println("Leitura efetuada com sucesso...\n");
BufferedWriter out;
out=new BufferedWriter(new FileWriter("Saida-"+"destino.txt"));
out.write(l.toString());
out.close();
System.out.println("Gravação efetuada com sucesso\nO nome do novo arquivo gerado é : Saida-destino.txt");
}
catch(Exception e){
System.out.println("Ocorreu um erro na escrita...");
}
}
catch(Exception e){
System.out.println("Ocorreu um erro na leitura, destino ou nome do arquivo invalidos!!");
}
}
}
Obrigado a quem puder ajudar…