Problema - Contador - Reserva de Passagens aéreas

5 respostas
G
Pessoal eu to com um problema em um método:
public void contadorLugarPrimeiraClasse(){
		//faz a contagem dos lugares na primeira classe
		for (int contadorLugarPrimeiraClasse = 1; contadorLugarPrimeiraClasse < primeiraClasse.length; contadorLugarPrimeiraClasse++) {
			if (primeiraClasse[contadorLugarPrimeiraClasse]
					.equals("Vago")) {
				lugarDisponivelPrimeiraClasse++;
			}}}
Até um tempo atrás, ele tava fazendo o certo, o for conta quantos lugares a primeira classe tem, o if, retorna quantos lugares estão vagos. Ele funciona assim, quando o usuário escolhe no menu: "reservar passagem na primeira classe", aparece "nós temos 10 lugares disponiveis", o usuário escolhe o lugar e aparece a mensagem, "deseja escolher outro lugar?", AI COMEÇA O PROBLEMA, pq não aparece "nós temos 9 lugares disponiveis", aparece "nós temos 19 lugares disponiveis", não sei como eu posso resolver isso, vou postar o código do menu também.
if(menu1 == 1) {
						a.contadorLugarPrimeiraClasse();
						
					
						if (a.lugarDisponivelPrimeiraClasse == 0) {
							System.out
									.println("Nossa primeira classe está lotada, deseja ser levada ao menu principal?(1-sim|2-não)");
									int resposta = in.nextInt();
							if(resposta ==1){
								menu1 = 0;
							}else{
								throw new IllegalArgumentException("Classe lotada!");
							}								
						} else {
							a.reservaPrimeiraClasse();						
							System.out
									.println("Deseja escolher outra poltrona? (1:sim ou 2:nao): ");
							p1 = in.nextInt(); // p1 = pergunta de poltrona												// Primeira Classe
							if (p1 == 1) {
								retorno = true;
								menu1 = 0;
							}
							if (p1 == 2) {
								retorno = false;
								menu1 = 5;
							}
							while (p1 != 1 && p1 != 2) {
								System.out
										.println("Por favor, digite 1 para sim e 2 para não.");
								p1 = in.nextInt();
							}}}

Então, eu queria uma luz de como resolver isso, obrigado
@edit [url]http://www.mediafire.com/?sh4mwwk1cpjects[/url] Projeto completo, caso queiram avaliar

5 Respostas

G

up;

G

Será que ninguém consegue isso? Juro, de nenhuma forma eu consegui resolver isso, já comparei com um código antigo e nada.

d34d_d3v1l

antes do for coloque:

contadorLugaresDisponiveis = 0;

pronto fim do problema

G

Nem tenho essa variavel no programa… Mas pra eu explicar: for (int contadorLugarPrimeiraClasse = 1; contadorLugarPrimeiraClasse < primeiraClasse.length; contadorLugarPrimeiraClasse++)
O contadorLugarPrimeiraClasse, não pode ser = 0, pq ele lê o array e a posição 0 do array é uma String " ", pq, não existe em um avião poltrona 0 e sim poltrona 1…

@edit: Olha, deu certo, eu agradeço a ajuda, mas, porque isso? não entendi…

d34d_d3v1l

Cara eu me referia a variavel:
lugarDisponivelPrimeiraClasse

Ela esta declarada como atributo da classe correto?
Se vc verificou a quantidade disponivel e deu 10 na primeira vez…
E não ‘resetou’ essa variavel para 0, quando ele contar novamente ele vai começar em 10.
Ou seja, 10 + 9 = 19. E assim por diante;

O corrto seria:

public void contadorLugarPrimeiraClasse(){
                lugarDisponivelPrimeiraClasse = 0;
		
                //faz a contagem dos lugares na primeira classe
		for (int contadorLugarPrimeiraClasse = 1; contadorLugarPrimeiraClasse < primeiraClasse.length; contadorLugarPrimeiraClasse++) {
			if (primeiraClasse[contadorLugarPrimeiraClasse]
					.equals("Vago")) {
				lugarDisponivelPrimeiraClasse++;
			}}}
Criado 30 de junho de 2012
Ultima resposta 30 de jun. de 2012
Respostas 5
Participantes 2