Boas amigos,
Estou a fazer um programa para a licenciatura de Eng. Informática em que se simula uma estacao de comboios, o programa é composto por varias classes, que estão dentro dos 2 packages principais, eis as classes:
No package Aplicação estao as classes Aplicação, Companhia, MenuEstacao. No package Horario estão as classes Horario, estacao e paragem. Depois tenho mais um package mas esse é o da consola onde crio os menus, que não interessam que já estão feitos.
Já tenho cerca de 80% do programa bem feito penso eu, agora estou com umas dificuldades no seguinte:
[code]
public class MenuEstacao {
// a companhia a que pertence esta aplicação
private Companhia companhia;
// a consola de interação
private SConsola consola = new SConsola( "Menu de estação", 500, 500 );
Estacao aEstacao = new Estacao();
// a hora para testar o sistema
private Hora aHora = new Hora();
// este construtor poderá ter de ser alterado
public MenuEstacao( Companhia c ){
companhia = c;
}
/**
* menu principal da aplicação
*/
public void menuEstacao(){
String menu = " \n S - Próxima saida para um destino\n" +
" E - Próxima entrada de um destino\n" +
" M - Mudar de estação\n" +
" H - mudar a hora\n" +
" X - Sair\n";
char op = ' ';
do {
// apagar a consola e apresentar qual a estação que está a ser operada
consola.clear();
consola.println( "Estação <"+ aEstacao.getId() +"> \n" );
consola.println( aHora.toString() ); // apresentar a hora a usar nos testes
// indicar qual a próxima entrada no formato seguinte:
// dependendo se há ou não mais comboios
// Próxima entrada: <hora de entrada> vindo de <estação de origem>
int origem = aEstacao.getId();
consola.print("dd"+aEstacao.getProximaEntrada(aHora) + "ee" + aEstacao.getHorariosOrigem(origem));
// Próxima entrada: não há mais comboios
System.out.println("Próxima entrada: não há mais comboios");
// indicar qual a próxima saída no formato seguinte:
// dependendo se há ou não mais comboios
// Próxima saída: <hora de entrada> com destino a <estação de destino>
// Próxima saída: não há mais comboios
System.out.println("Próxima saída: não há mais comboios");
// apresentar os horários de todos os comboios que param nesta estação
consola.println("\n---------- Horários nesta estação ---------");
// para cada comboio apresentar:
// se esta estação for a origem
// Originário daqui sai <hora saida> para <estação destino>
// se esta estação for a última
// Vindo de <estação origem> entra <hora entrada> e termina viagem aqui
// nos outros casos
// Vindo de <estação origem> entra <hora entrada> sai <hora saida> para <estação destino>
consola.println("-------------------------------------------");
// apresentar e processar o menu principal
consola.println(menu);
op = consola.readChar();
op = Character.toLowerCase(op);
switch (op) {
case 's': case 'S':
saidaDestino();
break;
case 'e': case 'E':
entradaOrigem();
break;
case 'm': case 'M':
mudarEstacao();
break;
case 'h': case 'H':
mudarHora();
break;
}
} while (op != 'X' && op != 'x');
consola.close();
}
/**
* escolhe outra estação para operar
*/
private void mudarEstacao() {
consola.clear();
// faz o pedido, falta fazer a mudança
Estacao e = getEstacao("Qual a estação para que pretende mudar? ");
e.getId();
}
/**
* método auxiliar para pedir uma estação ao utilizador
* @param msg mensagem a escrever no pedido
* @return a estacão selecionada
*/
private Estacao getEstacao( String msg ){
Estacao e = null;
do {
consola.println( msg );
int cod = consola.readInt(); // pedir o código da estação
for(int i =0; i<companhia.nEstacoes;i++)
if( i == cod){
e.get(i); // Aqui dá-me null pointer exception
break;
// System.out.println("estação existe");
}
// testar se a estação com esse código existe
System.out.println("Essa estação não existe...");
// deverá fazer isto até que seja introduzida uma estação válida
} while( false );
return e;
}
/**
* muda a hora para testar convenientemente o sistema
*/
private void mudarHora() {
consola.print( "Introduza a hora no formato (h:m): " );
String horaS = consola.readLine()+":00"; // :00 para introduzir os segundos
aHora = new Hora( horaS );
}
/**
* Método que vai apresentar qual a próxima entrada de um comboio
* que fez escala na estação escolhida
*/
private void entradaOrigem() {
Estacao e = getEstacao("Qual a estação de origem? ");
int origem = consola.readInt();
e.getHorariosOrigem(origem); // nao tenho a certeza
// depois de pedida a estação de origem deve apresentar qual a
// a próxima entrada de um comboio que passe por essa origem
consola.println( "Já não há entradas vindas de " + e );
// caso haja comboios
// Entrada vinda de <estação origem> às <hora entrada>
consola.readLine();
}
/**
* Método que vai apresentar qual a próxima saída de um comboio
* que fará escala na estação escolhida
*/
private void saidaDestino() {
consola.clear();
Estacao e = getEstacao("Qual a estação de destino? ");
// depois de pedida a estação de destino deve apresentar qual a
// a próxima saída de um comboio que passe por esse destino
consola.println( "Já não há saidas para " + e );
// caso haja comboios
// Saida para <estação origem> às <hora entrada>
// chegada ao destino às <hora de chegada ao destino>
// duração total da viagem: <duração em horas>
// estações em que pára até ao destino
consola.println("\nEscalas até ao destino");
// apresentar os códigos de todas as estações entre esta estação e o destino
// exemplo: 2 - 4 - 5 - 6 - 8
consola.readLine();
}
public static void main(String[] args) {
Companhia c = new Companhia();
MenuEstacao menu = new MenuEstacao(c);
menu.menuEstacao();
}
}[/code]
Na linha 109 dá.me erro como referi, eu gostava é de saber porquê?