Quando se utiliza a condição de validação E todos os critérios têm que ser válidos.
Como a sua primeira validação é da idade e ela já devolve FALSE, nem é necessário mais verificar os próximos critétios porque no geral será FALSE, caindo na condição do ELSE
Para entrar no System.out.println(“Nao pode entrar”);
É necessário, segundo o seu código, idade ser menos que 18 e também o amigoDoDono ser igual a falso
o falso que você colocou, apenas ser para o amigoDoDono.
Segue uma breve explicação sobre sa dúvida. Espero que eu tenha entendito se era essa dúvida mesmo, mas em
todo caso está ai.
public static void main(String[] args) {
int idade = 19;
boolean amigoDoDono = true;
/*
* Aqui voce está dizendo o seguinte
*
* Se a IDADE for < MENOR que 18 anos E AMIGO DO DONO for FALSE
* Não pode entrar
* Senão
* Pode entrar
*
* Quando você faz amigoDoDono == false você está comparando
* e não atribuindo false para Amigo do dono pois você definiu
* amigoDoDono como true na variável. Logo ele 'pode entrar'.
* Agora se a idade for 17 e amigo do dono for false irá imprimir "Não pode entrar"
*/
if (idade < 18 && amigoDoDono == false) {
System.out.println("Não Pode entrar");
} else {
System.out.println("Pode entrar");
}
}
public class Fi {
public static void main(String[] args) {
int idade = 19;
boolean amigoDoDono = true;
if (idade < 18 && !amigoDoDono) {
System.out.println("Nao pode entrar");
}
else {
System.out.println("Pode entrar");
}
}
}
Você esta dizendo que o cara tem 19 anos, ou seja MAIOR que 18, e ele É amigo do dono…sendo assim a sua condição diz que ele PODE entrar, se vc quer que ele nao entre, vc deve mudar as variaveis para 17 anos e false, ou entao muda a própria condição
public class Fi {
public static void main(String[] args) {
int idade = 17;
boolean amigoDoDono = false;
if (idade < 18 && !amigoDoDono) {
System.out.println("Nao pode entrar");
}
else {
System.out.println("Pode entrar");
}
}
}
[quote=MatheusFalcade]public class Fi {
public static void main(String[] args) {
int idade = 19;
boolean amigoDoDono = true;
if (idade < 18 && !amigoDoDono) {
System.out.println("Nao pode entrar");
}
else {
System.out.println("Pode entrar");
}
}
}
Você esta dizendo que o cara tem 19 anos, ou seja MAIOR que 18, e ele É amigo do dono…sendo assim a sua condição diz que ele PODE entrar, se vc quer que ele nao entre, vc deve mudar as variaveis para 17 anos e false, ou entao muda a própria condição
public class Fi {
public static void main(String[] args) {
int idade = 17;
boolean amigoDoDono = false;
if (idade < 18 && !amigoDoDono) {
System.out.println("Nao pode entrar");
}
else {
System.out.println("Pode entrar");
}
}
}
[/quote]
hehehe, até entendo… mas no caso do autor do tópico, ele não quer fazer o cara “entrar” ele quis entender porque com a inversão da condição foi alterado o fluxo.
Ele só ta tentando entender a lógica da condição, não o código…
[quote=Super Fabio]Poque que nessa condição booleana se dá “pode entrar” se no if eu coloquei condição falsa se ele tiver mais de 18 anos?
public class Fi {
public static void main(String[] args) {
int idade = 19;
boolean amigoDoDono = true;
if (idade < 18 && amigoDoDono == false) {
System.out.println("Nao pode entrar");
}
else {
System.out.println("Pode entrar");
}
}
}
[/quote]
Veja, você só tem 4 condições possíveis nesse caso:
Amigo = V, MaiorDe18 = V
Amigo = F, MaiorDe18 = V
Amigo = V, MaiorDe18 = F
Amigo = F, MaiorDe18 = F
Sua única condição verificada é a 4, sendo assim todas as outras irão permitir a entrada.
No caso if (idade < 18 && amigoDoDono == false) é o mesmo que “Amigo = F e MaiorDe18 = F”.
Seu caso só iria negar a entrada se:
if (idade < 18 || !amigoDoDono)
Nesse caso, somente entrariam os maiores de 18 anos que são amigos.