Erro script reserva

5 respostas
X

Pessoal, boa noite!!!
Sou novo aqui, queria pedir a ajuda de vcs, estou aprendendo java, e estou tentando fazer um script de reserva de passagem aérea.

O código abaixo, ele da erro e para, como faço pra passar pro proximo passo, que no caso ai ele entraria no while.
Tentei pesquisar e não consegui achar nada, teria como me explicar, sou estudante e estou tentando aprender... =)
Ah não terminei o código, estou tentando, e se estou indo no caminho certo.
Vlw galera!

import javax.swing.*;
import java.util.*;
public class reserva {
	  public static void main(String[] args){
	   Scanner sc = new Scanner(System.in); 
	   int[] voo = new int[38];
	    int[] qlug = new int[300];
	    int i, nvoo;
	    int rg = 0;
	    int lug = 0;

	   // contagem de voos de 1 a 37
	    for (i = 1; i < voo.length; i++){
	    	voo[i] = i;
	    }
	   // iserção das vagas em cada um dos 37 voos.
	      for (i = 1; i< qlug.length; i++){
	    System.out.println("Digite a quantidade de vagas para o Voo numero: " +voo[i]); 
	    qlug[i]= sc.nextInt();
	    }
	  
	   // enquanto a identidade for diferente de 9999, irá continuar pedir a identidade.
	   while(rg != 9999){
		   System.out.println("Digite o numero da identidade:");
		   rg = sc.nextInt();
		   if(voo.length < 38){
			   System.out.println("Digite o numero do voo desejado:");
			   voo[i] = voo[i] - i;
			   
				 
		   } else {
			   System.out.println("Este voo não existe!");
			  }
		   if(qlug.length > 0){
			   System.out.println("");
		   }
		   
		   
	   }
	   
	   
	  }  
	}

5 Respostas

fredericomaia10

Qual o erro apresentado? Em que parte do código exatamente você está com dúvidas?

X

Ele da esse erro:

Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 38
at reserva.main(reserva.java:18)

Eu li sobre isso, fala que ele não consegue preencher o array 38, eu sei pq, é pra ir até 37 msm…
eu quero q passe adiante, não retorne o erro… deu pra entender ?

fredericomaia10

O erro é porque seu segundo for percorre qlug.length que tem 300 posições de array, enquanto voo possui apenas 38 (de 0 a 37). Sua variável i dentro deste for iria variar então de 0 a 299. Quando chega à i com valor 38, o código tenta acessar a posição voo[38] e o erro acontece. Seu for deveria percorrer voo.length.

// iserção das vagas em cada um dos 37 voos. for (i = 1; i< qlug.length; i++){ System.out.println("Digite a quantidade de vagas para o Voo numero: " +voo[i]); qlug[i]= sc.nextInt(); }

X

Vlw,

Eu estava associando o vetor errado né, que vácilo!
Vou continuar tentando aqui, qualquer dúvida posto ai.
Obrigado!

X

Mais uma dúvida:
No código abaixo, ele imprime o numero do voo que é o vetor Voo e a quantidade de vagas que eu cadastrei para cada voo.
Como faço para associar os dois, vou explicar:
Para o Voo 1: Tem 20 vagas disponiveis. (já exibe no código abaixo)
Proximo passo, o cliente registrado pelo RG seleciona o Voo(X) e pede 5 vagas.
Proximo passo, subtrai do Voo(X), 5 vagas, e ai fica com 15.

Já vou deixando claro que é um exercício de faculdade, porém não quero scripts já resolvidos por programadores experiêntes.
Quero tiver como me auxiliar, como fazer, qual comando jogar, e pq?

No mais, Obrigado!

import java.util.*;
import javax.swing.*;
public class Reserva {
    public static void main(String[] args) {
        Scanner sc   = new Scanner(System.in);
        int[] Voo  = new int[4];
        int[] Poltronas  = new int[4];
        int i, j, nRG;
        int nVoo;
        int nPoltronas;
        int RG  = 0;
        
        // contagem do vetor Voo
        for (i = 1; i < Voo.length; i++) {
            Voo[i] = i;
        }
        // contagem do vetor Poltronas
        for (j = 1; j < Poltronas.length; j++){
            Poltronas[j] = j;
        }
        // Inserção das poltronas disponíveis em cada um dos 4 voos.
        for (i = 1; i < Voo.length; i++) {
            System.out.println("Digite a quantidade de vagas para o Voo numero: " + Voo[i]);
            Poltronas[1] = sc.nextInt();
        }
        // Imprime a lista de Voos + Poltronas disponiveis
        Arrays.sort(Voo);
        System.out.println("Lista de vagas disponíveis:");
        for (i = 1; i <Voo.length; i++){
            System.out.println("Para o voo "+Voo[i]+" existem:\n ["+Poltronas[1]+"] disponíveis.");
        }// Inserção do RG do cliente
        if(RG != 9999){
           System.out.println("Digite o número da sua identidade");
           nRG = sc.nextInt();
           System.out.println(nRG);
            while(nRG != 99999){
            
            }    
        }
        
        
      }
}
Criado 21 de agosto de 2011
Ultima resposta 22 de ago. de 2011
Respostas 5
Participantes 2