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:
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
int idade[] = new int[20];
int total = 0;
int valor;
int verdadeiro = 1;
int falso = 0;
String nome;
for(int i = 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!");
} else if ((i < 18) && (valor == verdadeiro)){
System.out.println("Entrada liberada!");
} else {
System.out.println("Entrada proibida!");
}
}
}
@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
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
int idade[] = new int[3];
int valor = 0;
int verdadeiro = 1;
int falso = 0;
String nome;
for (int i = 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!");
} else if ((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.
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:
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
int idade[] = new int[3];
int valor = 0;
int verdadeiro = 1;
int falso = 0;
String nome;
for (int i = 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!");
}
}
}
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.
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{
//resto da condição
}