Ai pessoal do Guj, Boa tarde… to com o seguinte dilema…
To fazendo um trabalho para a faculdade…
tenho os seguintes códigos:
* Arquivo de entrada e saÃda de dados
*
*/
package estudodecaso2;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.StringTokenizer;
/**
*
* @author UNITINS
* Classe destinada a representar o objeto que realizará a leitura dos arquivos de entrada
* (passageiros.txt e itinerario.txt) e a escrita dos arquivos de saÃda (saida1.txt e saida2.txt).
*
*/
public class Io {
private ArrayList<Passageiro> conseguiramViajar = new ArrayList<Passageiro>();
private ArrayList<Passageiro> naoConseguiramViajar = new ArrayList<Passageiro>();
public ArrayList<Trecho> lerArquivoItinerario(String sFileName, Veiculo veiculo) {
File arquivo = new File(sFileName);
if(!arquivo.exists())
{
System.err.println("Arquivo \""+sFileName+"\" não existe.");
return null;
}
try //tentativa de execução do seguinte código:
{
ArrayList<Trecho> lista = new ArrayList<Trecho>();
BufferedReader leitor = new BufferedReader(new FileReader(arquivo)); //leitor sequencial
// Recupera todas as linhas de modo sequencial
String linha = null;
// int indice = 0; //Ãndice do trecho, para facilitar o cálculo de intersecção de trechos, saber quando uma viagem acabou, etc.
while ((linha = leitor.readLine()) != null) {
//<cidade_origem>;<cidade_destino>
StringTokenizer st = new StringTokenizer(linha, ";");
Trecho trecho = new Trecho();
trecho.setCidadeOrigem(st.nextToken()); //<cidade_origem>
trecho.setCidadeDestino(st.nextToken()); //<cidade_destino>
lista.add(trecho);
}
leitor.close(); //fechar leitor
return lista;
} catch (IOException e) {
//exibe o erro na saÃda de erro (err)
System.err.println("Ocorreu um erro: "+e.toString());
}//fim try catch
return null;
}// fim lerArquivoItinerario
public ArrayList<Passageiro> lerArquivoPassageiros(String sFileName) {
File arquivo = new File(sFileName);
if(!arquivo.exists())
{
System.err.println("Arquivo \""+sFileName+"\" não existe.");
return null;
}
try //tentativa de execução do seguinte código:
{
ArrayList<Passageiro> lista = new ArrayList<Passageiro>();
BufferedReader leitor = new BufferedReader(new FileReader(arquivo)); //leitor sequencial
// Recupera todas as linhas de modo sequencial
String linha = null;
while ((linha = leitor.readLine()) != null) {
//<nome_passageiro>;<cidade_origem>;<cidade_destino>
StringTokenizer st = new StringTokenizer(linha, ";");
String sNomePassageiro = st.nextToken();
String cOrigem = st.nextToken();
String cDestino = st.nextToken();
Passageiro passageiro = new Passageiro(sNomePassageiro,cOrigem,cDestino);
lista.add(passageiro);
}
leitor.close(); //fechar leitor
return lista;
} catch (IOException e) {
//exibe o erro na saÃda de erro (err)
System.err.println("Ocorreu um erro: "+e.toString());
}//fim try catch
return null;
}// fim lerArquivoPassageiros
public void AdicionarPassageiroConseguiuViajar(Passageiro p){
conseguiramViajar.add(p);
}
public void RemoverPassageiroConseguiuViajar(){
conseguiramViajar.remove(conseguiramViajar.size()-1);
}
public void AdicionarPassageiroNaoConseguiuViajar(Passageiro p){
naoConseguiramViajar.add(p);
}
public Boolean gerarSaida1(String sFileName){
BufferedWriter out = null;
try {
out = new BufferedWriter(new FileWriter(sFileName));
for (int i = 0; i < conseguiramViajar.size(); i++) {
out.write(conseguiramViajar.get(i).getNome()+";"+
conseguiramViajar.get(i).getTrechoPretendido().cidadeOrigem+";"+
conseguiramViajar.get(i).getTrechoPretendido().cidadeDestino+"\r\n");
}
out.close();
return true;
} catch (IOException ex) {
System.err.println("Ocorreu um erro gerando saÃda. ex="+ex.toString());
return false;
} finally {
try {
out.close();
} catch (IOException ex) {
System.err.println("SaÃda em memória: erro fechando arquivo de saÃda. ex="+ex.toString());
}
}
}
public Boolean gerarSaida2(String sFileName){
BufferedWriter out = null;
try {
out = new BufferedWriter(new FileWriter(sFileName));
for (int i = 0; i < naoConseguiramViajar.size(); i++) {
out.write(naoConseguiramViajar.get(i).getNome()+";"+
naoConseguiramViajar.get(i).getTrechoPretendido().cidadeOrigem+";"+
naoConseguiramViajar.get(i).getTrechoPretendido().cidadeDestino+"\r\n");
}
out.close();
return true;
} catch (IOException ex) {
System.err.println("Ocorreu um erro gerando saÃda. ex="+ex.toString());
return false;
} finally {
try {
out.close();
} catch (IOException ex) {
System.err.println("SaÃda em memória: erro fechando arquivo de saÃda. ex="+ex.toString());
}
}
}
}
e
package estudodecaso2;
/**
*
* @author UNITINS
* Classe destinada a representar um veÃculo. Possui como atribuitos o
* número de poltronas para passageiros e um nome para mera identificação.
*
*/
public class Veiculo {
int nPoltronas;
String nome;
public Veiculo(Integer nPoltronas,String sNome){
this.nome = sNome;
this.nPoltronas = nPoltronas;
}
public int getNPoltronas()
{
return nPoltronas;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
e
package estudodecaso2;
/**
*
* @author UNITINS
* Classe destinada a representar um passageiro. Possui como atribuitos o
* nome e o trecho ao qual o passageiro pretende (possui intenção de) viajar.
*
*/
public class Passageiro {
private String nome;
private TrechoPretendido trechoPretendido = new TrechoPretendido();
public class TrechoPretendido {
String cidadeOrigem,cidadeDestino;
}
public Passageiro(String nome, String cOrigem,String cDestino) {
this.nome = nome;
this.trechoPretendido.cidadeOrigem = cOrigem;
this.trechoPretendido.cidadeDestino = cDestino;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public TrechoPretendido getTrechoPretendido() {
return trechoPretendido;
}
}
e
package estudodecaso2;
/**
*
* @author UNITINS
* Classe destinada a representar um trecho, intervalo entre duas cidades. Vale lembrar que
* um itinerário é formado por vários trechos. Possui como atribuitos a cidade de
* origem e de destino.
*
*/
public class Trecho {
private String cidadeOrigem,
cidadeDestino;
public String getCidadeDestino() {
return cidadeDestino;
}
public void setCidadeDestino(String cidadeDestino) {
this.cidadeDestino = cidadeDestino;
}
public String getCidadeOrigem() {
return cidadeOrigem;
}
public void setCidadeOrigem(String cidadeOrigem) {
this.cidadeOrigem = cidadeOrigem;
}
}
e
package estudodecaso2;
/**
*
* @author UNITINS
* Classe destinada a representar uma especialização de um veÃculo.
* Deve-se, primeiramente, implementar esta classe para que todo o código fonte
* seja compilado.
*
*/
/**implementeaqui**/
// implemente aqui.
public class Onibus extends Veiculo {
public Onibus(){
super(46, "Pocoto");
}
}
e a executavel
package estudodecaso2;
import java.util.ArrayList;
/**
*
* @author UNITINS
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// Instância de um objeto Onibus (veja o arquivo Onibus.java
Onibus carro = new Onibus();
Io io = new Io();
ArrayList<Trecho> itinerario;
try {
itinerario = io.lerArquivoItinerario("itinerario.txt", carro);
} catch (Exception ex) {
System.err.println("Erro lendo arquivo itinerario.txt ex="+ex.toString());
return;
}
//arquivo de passageiros
ArrayList<Passageiro> passageiros = io.lerArquivoPassageiros("passageiros.txt");
Passageiro passageiro[] = new Passageiro[passageiros.size()];
for (int iPassageiro = 0; iPassageiro < passageiros.size(); iPassageiro++) {
passageiro[iPassageiro] = new Passageiro(
passageiros.get(iPassageiro).getNome(),
passageiros.get(iPassageiro).getTrechoPretendido().cidadeOrigem,
passageiros.get(iPassageiro).getTrechoPretendido().cidadeDestino);
}
Viagem viagem = new Viagem(itinerario,carro,passageiros);
//exibir a rota
System.out.println("Atenção Sr. clientes! Aberto perÃodo para venda de passagens no veÃculo ("+viagem.getVeiculo().getNome()+") que irá executar a seguinte rota:");
for (int i = 0; i < viagem.itinerario.size(); i++) {
System.out.println("Trecho "+Integer.toString(i+1)+" --------------------------------- ");
System.out.println("saÃda de: "+viagem.itinerario.get(i).getCidadeOrigem());
System.out.println("chegada em: "+viagem.itinerario.get(i).getCidadeDestino());
}
System.out.println("Nossos guichês estão abertos neste momento, nestas cidades. Aguardando clientes...");
viagem.SimulaViagem(io);
if(viagem.getIo().gerarSaida1("saida1.txt"))
{
System.out.println("saida1.txt gerado com sucesso.");
}
else
{
System.out.println("Erro gerando saida1.txt");
}
if(viagem.getIo().gerarSaida2("saida2.txt"))
{
System.out.println("saida2.txt gerado com sucesso.");
}
else
{
System.out.println("Erro gerando saida2.txt");
}
System.out.println("Atendimento finalizado. Obrigado por usar nossos serviços.");
}
}
E estou tendo dificuldades exatamente em implementar a simulação da viagem do passageiro sera que alguem pode me ajudar???
OBS … Meu codigo esta entre as sequencias de asteriscos
este e o meu código que estou fazendo
package estudodecaso2;
import java.util.ArrayList;
/**
*
* @author UNITINS
* Classe destinada a representar uma viagem.
*
*/
public class Viagem {
ArrayList<Trecho> itinerario;
ArrayList<Passageiro> passageiros;
Veiculo veiculo;
int vetorOcupadas[];
private Io io;
public Viagem(ArrayList<Trecho> itinerario,Veiculo veiculo,ArrayList<Passageiro> passageiros) {
this.itinerario = itinerario;
this.passageiros = passageiros;
this.veiculo = veiculo;
vetorOcupadas = new int[itinerario.size()];
for (int i = 0; i < vetorOcupadas.length; i++) {
vetorOcupadas[i] = 0;
}
}
/**
*
* @param io
* Método principal da classe. Tem a finalidade de simular a viagem para gerar os dados
* de saÃda, ou seja, qual passageiro viajou e qual não viajou.
*
*/
public void SimulaViagem(Io io){
/***************************************************************************/
int p = 0;
String NomePass;
String Ci_Origem;
String Ci_Destino;
for( p = 0; p < passageiros.size(); p++ ){
NomePass = passageiros.get(p).getNome();
Ci_Origem = passageiros.get(p).getTrechoPretendido().cidadeOrigem;
Ci_Destino = passageiros.get(p).getTrechoPretendido().cidadeDestino;
Passageiro passageiro = new Passageiro(NomePass, Ci_Origem, Ci_Destino);
io.AdicionarPassageiroConseguiuViajar(passageiro);
System.out.println("Cliente "+"("+(p +1)+")"+"" +
" "+NomePass+" "+ "Origem: "+Ci_Origem+" "+"Destino: "+Ci_Destino);
}
this.io=io;
}
/*******************************************************************************/
public Veiculo getVeiculo() {
return veiculo;
}
public void setVeiculo(Veiculo veiculo) {
this.veiculo = veiculo;
}
public ArrayList<Trecho> getItinerario() {
return itinerario;
}
public void setItinerario(ArrayList<Trecho> itinerario) {
this.itinerario = itinerario;
}
public Io getIo() {
return io;
}
}
alguem pode me dizer onde estou errando…
Desde ja agradeço.