Olá pessoal! Estou tentando criar o seguinte programa:
Escreva um programa para autorização de entrada numa boate.
– Nessa boate, uma pessoa pode entrar se for maior de idade (18 anos ou mais), ou, se ela for amigo do dono da boate, mesmo que menor de idade.
O problema é que mesmo quando a pessoa é maior de 18 anos se não for, também amigo do dono não está permitindo a entrada.
Segue o programa:
publicstaticvoidmain(String[]args){Scannerentrada=newScanner(System.in);intidade[]=newint[20];inttotal=0;intvalor;intverdadeiro=1;intfalso=0;Stringnome;for(inti=0;i<idade.length;i++){System.out.print("Informe um nome: ");nome=entrada.next();System.out.print("Informe a idade: ");idade[i]=entrada.nextInt();System.out.print("É amigo do dono da boate? [1] Sim | [0] Não :");valor=entrada.nextInt();if(valor==verdadeiro){System.out.print("Sim! ");}else{System.out.print("Não! ");}if(i>18){System.out.println("Entrada liberada!");}elseif((i<18)&&(valor==verdadeiro)){System.out.println("Entrada liberada!");}else{System.out.println("Entrada proibida!");}}}
Se for isso, a condição diz: se I for menor que 18 ou valor equivaler a verdadeiro.
Pense bem.
W
Wendell_Calixto
@FearX, mas pelo o que entendi do enunciado acima, ele precisa ser maior de 18 OU ser amigo do dono da boate.
Mas se eu estiver equivocado vc pode nos explicar melhor?
Obrigado
FearX1 like
Sim, você entendeu certo, meu caro. O problema está na condição (i < 18). Entendeu agora?
Ainda escrevi por extenso para ver se você visualizava! rs.
W
Wendell_Calixto
Ah, agora eu saquei. Vlw amigo! =D
N
Niedja_Vital
Pessoal, obrigada a todos!
O programa final ficou assim:
publicstaticvoidmain(String[]args){Scannerentrada=newScanner(System.in);intidade[]=newint[3];intvalor=0;intverdadeiro=1;intfalso=0;Stringnome;for(inti=0;i<idade.length;i++){System.out.print("Informe um nome: ");nome=entrada.next();System.out.print("Informe a idade: ");idade[i]=entrada.nextInt();if(idade[i]>18){System.out.println("Entrada liberada!");}if(idade[i]<18){System.out.print("É amigo do dono da boate? [1] Sim | [0] Não :");valor=entrada.nextInt();}if(valor==1){System.out.println("Entrada liberada!");}elseif((idade[i]<18)&&(valor==0)){System.out.println("Entrada proibida!");}}}
}
Outra coisa, alterei o programa para que quando a pessoa for maior de 18 anos, não perguntar se é amigo do dono da boate, já que não há necessidade.
darlan_machado
E os operadores lógicos?
A ideia do enunciado é que você reduza o uso de ifs/elses.
Assim sendo, penso que a melhor solução seria:
publicstaticvoidmain(String[]args){Scannerentrada=newScanner(System.in);intidade[]=newint[3];intvalor=0;intverdadeiro=1;intfalso=0;Stringnome;for(inti=0;i<idade.length;i++){System.out.print("Informe um nome: ");nome=entrada.next();System.out.print("Informe a idade: ");idade[i]=entrada.nextInt();System.out.print("É amigo do dono da boate? [1] Sim | [0] Não :");valor=entrada.nextInt();if(idade>18||valor!=0){System.out.println("Entrada liberada!");}else{System.out.println("Entrada proibida!");}}}
N
Niedja_Vital
Pois é, eu entendi o que você quis dizer, quando falou que a proposta seria utilizar os operadores lógicos e concordo, mas quando mostrei ao professor ele me pediu para que quando a pessoa for maior de 18 anos não perguntar se é amiga do dono.
FearX
Sem dificuldade nisso, ué. Depois que ele fazer o input da idade, você compara se é menor que 18. Se for menor que 18. pergunta se é amigo do dono. Se não entrar na condição, já pode liberar a entrada e boa.
System.out.print("Informe a idade: ");idade[i]=entrada.nextInt();if(idade[i]<18){System.out.print("É amigo do dono da boate? [1] Sim | [0] Não :");valor=entrada.nextInt();}else{//restodacondição}