Olá, estou criando um código que simula de forma bem simples um processo em um cinema. Estou na etapa em que a pessoa escolhe o filme e o sistema precisa fazer uma comparação entre a Idade fornecida pela pessoa e a classificação indicativa do filme. Se for maior que a indicação do filme, o código segue em frente, se não ele barra o usuário com uma mensagem. Estou utilizando polimorfismo para fazer a “conversa” entre as classes, até agora foi bem, porém estou com este erro:
Exception in thread "main" java.lang.StackOverflowError
at VerificarIdade.<init>(VerificarIdade.java:6)
at Filme.<init>(Filme.java:10)
at VerificarIdade.<init>(VerificarIdade.java:6)
at Filme.<init>(Filme.java:10)
at VerificarIdade.<init>(VerificarIdade.java:6)
at Filme.<init>(Filme.java:10)
at VerificarIdade.<init>(VerificarIdade.java:6)
at Filme.<init>(Filme.java:10)
at VerificarIdade.<init>(VerificarIdade.java:6)
at Filme.<init>(Filme.java:10)...
Que se repete ainda mais vezes.
Tentei por enquanto aplicar a somente um filme, mas deu o erro, se eu conseguir arrumar vou aplicar para o restante tbm. Queria saber como resolver e se talvez exista uma forma mais simples de se realizar essa operação. Talvez até minha aplicação do if esteja incorreta kkk, estou BEM enferrujado no JAVA, valeu quem puder ajudar! Vou deixar as classes do ERRO abaixo!
Classe VerificarIdade:
public class VerificarIdade {
Entrada entrada = new Entrada();
Filme filme = new Filme();
//==============================================
//POLIMORFISMO
public void verIdade() {
int id = 0;
id = Integer.parseInt(entrada.entDados("\nInforme sua idade:"));
if (id < 12) {
System.out.println("\nACESSO AO FILME NÃO LIBERADO!!!");
} else {
System.out.println("\nACESSO AO FILME LIBERADO!!!");
}
}
//=====================================================
}
Classe Filme:
public class Filme {
private String nomeFilme = "";
private int classificacao = 0;
private int horario = 0;
Entrada entrada = new Entrada();
VerificarIdade vI = new VerificarIdade();
//=========================================================
//POLIMORFISMO
public void impHaranha() {
System.out.println("\n\nHOMEM ARANHA 3\n Classificacao Indicativa: 12 anos\n Genero: Acao e Aventura\n");
boolean vai = true;
int op = 0;
while (vai) {
System.out.println("\n\n\nEscolha um horario e sala");
System.out.println("1) Sala 1 - 14hrs");
System.out.println("2) Sala 1 - 19hrs");
System.out.println("3) Sair");
try {
op = Integer.parseInt(entrada.entDados("\nEscolha uma opcao"));
} catch (NumberFormatException nfe) {
entrada.entDados("\nO valor da escolha deve ser um inteiro. Press <Enter> para continuar");
continue;
}
switch (op) {
case 1:
System.out.println("\n1) Horario 1");
vI.verIdade();
break;
case 2:
System.out.println("\n2) Horario 2");
vI.verIdade();
break;
case 3:
String resp = entrada.entDados("\nDeseja realmente sair do sistema? <s/n>");
if (resp.equalsIgnoreCase("s")) {
System.exit(0);
}
break;
default:
entrada.entDados("\nA opcao deve estar entre 1 e 3");
break;
}
} // fim do while
}
}