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ê?
