Olá pessoal, sou iniciante java e estou com um problema que não consigo resolver, tenho um aplicativo de vendas de passagens pra fazer que tem 3 métodos
escolhaClasse(), processamento(), e processamentoClasse2(). Ele tem um construtor que passa o valor do array, dentro de cada método coloquei a lógica
pedida mas quando testei com a classe de teste e fiz a escolha da classe, ele entra no método e começa o processamento mas quando pede pra o usuário
colocar o assento ele fica num loop eterno que recebe qualquer valor, achei muito estranho e não consigo ver onde errei.
Se alguém puder me ajudar agradeço. Segue a classe Principal e a classe de Teste.
Classe SistemaPassagens
package AppReservasDePassagens;
import java.util.ArrayList;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class SistemaPassagens {
int[] assentos;;
int conta = 0;
public SistemaPassagens(int size) {
assentos = new int[size];
}
// metodo para escolha da classe
public int escolhaClasse() {
Scanner input = new Scanner(System.in);
//for que inicializa todas as posicoes do array com 0
for (int i = 0; i < assentos.length; i++) {
assentos[i] = 0;
}
System.out.println("----------Reservas de Passagens---------------");
System.out.println("----------------------------------------------");
System.out
.println("Digite 1 para 1ª Classe / Digite 2 para 2ª Classe: ");
int numero = input.nextInt();
return numero;
}
// metodo da classe 1ª classe
public void processamento() {
Scanner input = new Scanner(System.in);
System.out
.println("Voce escolheu a 1ª classe!\nDigite um assento de 1 a 5: ");
int assento = input.nextInt();
while ((assento < 0) || (assento > 5)) {
JOptionPane.showMessageDialog(null, "Numero de poltrona invalido!");
System.out.println("Digite um assento de 1 a 5: ");
assento = input.nextInt();
}
while (assentos[assento] != 0) {
JOptionPane.showMessageDialog(null,
"Assento ocupado! Tente outro assento.");
System.out.println("Digite outro assento: ");
assento = input.nextInt();
}
if (assentos[assento] == 0) {
assentos[assento] = 1;
JOptionPane.showMessageDialog(null, "Assento comprado com sucesso");
JOptionPane.showMessageDialog(null, "Voce comprou o assento nº"
+ assento + " da 1ª classe");
}
for (int i = 0; i < 6; i++) {
conta += assentos[i];
}
if (conta == 5) {
System.out
.println("Classe lotada! Deseja comprar na 2ª classe?\nDigite 1 para sim ou 2 para nao: ");
int resposta = input.nextInt();
if (resposta == 1) {
processamentoClasse2();
} else {
JOptionPane.showMessageDialog(null,
"O proximo voo parte em 3 horas!");
}
}
}
// metodo pra 2ª classe
public void processamentoClasse2() {
Scanner input = new Scanner(System.in);
System.out
.println("Voce escolheu a 2ª classe!\nDigite um assento de 6 a 10: ");
int assento = input.nextInt();
while ((assento < 6) || (assento > 10)) {
JOptionPane.showMessageDialog(null, "Numero de poltrona invalido!");
System.out.println("Digite um assento de 6 a 10: ");
assento = input.nextInt();
}
while (assentos[assento] != 0) {
JOptionPane.showMessageDialog(null,
"Assento ocupado! Tente outro assento.");
System.out.println("Digite outro assento: ");
assento = input.nextInt();
}
if (assentos[assento] == 0) {
assentos[assento] = 1;
JOptionPane.showMessageDialog(null, "Assento comprado com sucesso");
JOptionPane.showMessageDialog(null, "Voce comprou o assento nº"
+ assento + " da 2ª classe");
}
for (int i = 6; i < 11; i++) {
conta += assentos[i];
}
if (conta == 5) {
System.out
.println("Classe lotada! Deseja comprar na 1ª classe?\nDigite 1 para sim ou 2 para nao: ");
int resposta = input.nextInt();
if (resposta == 1) {
processamento();
} else {
JOptionPane.showMessageDialog(null,
"O proximo voo parte em 3 horas!");
}
}
}
}
Classe de Teste
package AppReservasDePassagens;
public class TesteSistemaPassagens {
public static void main(String[] args) {
SistemaPassagens sistema = new SistemaPassagens(11);
int classe = sistema.escolhaClasse();
if(classe == 1){
sistema.processamento();
}else{
sistema.processamentoClasse2();
}
}
}
Desde já agradeço a colaboração de vocês!