Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] processamento do valor da variavel boolean

olá gostaria de saber sobre o processamento da variavel boolean "acompanhado" coloquei os comentarios no codigo, acho que fica melhor pra explicar onde estou com duvida

pergunta: o primeiro if, faz o processamento de true ou false, e o resultado fica guardado e é utilizado no segundo if ?

`public class TestaEscopo {

    public static void main(String[] args){
        System.out.println("testando condicionais");

        int idade = 16;
        int quantidadePessoas = 3;    
        boolean acompanhado;  // aqui o valor dela é neutro

        // aqui acontece o tratamento de dados
        if (quantidadePessoas >= 2) {    
            acompanhado = true;
        }else {
            acompanhado = false;
        }
        // na saida de dados,  nesse momento que estou com duvida,  
        // como esse é o 2 if ,  a variavel  acompanhado  recebe o valor do  processamento  do primeiro if ????
        if (idade >=18 || acompanhado){

            System.out.println("Seja bem vindo"); 
        } else {
            System.out.println("infelizmente voce nao pode entrar");
    }

} }

` o primeiro if, faz o processamento de true ou false, e o resultado fica guardado e é utilizado no segundo if ?

2 respostas
solução!

Ola,

Ao efetuar a declaracao da variavel acompanhado definindo seu tipo como boolean (primitivo), o mesmo sera iniciado como false, ou seja nao e neutro como comentou.

O primeiro if ira verificar com uso de operador matematico, se o valor armazenado na variavel quantidadePessoas for maior que 2. ira atribuir true a variavel acompanhado, se nao for maior, ira armazenara false.

O segundo if usa de operador matematico e logico, para verificar se a idade e maior que OU acompanhado for true, isso trata-se de uma expressao logica, que retorna um valor boolean, a ser avaliado. Se o resultado de idade >=18 || acompanhado for true, ele entra no bloco e emite a mensagem de boas vindas, senao for verdade, ele desvia para o segundo bloco exibindo a mensagem "Infelizmente voce nao pode entrar"

Operador logico OU, retorna true se alguma expressao for true.

Testando as expressoes:

IDADE = 19, ACOMPANHADO = FALSE
IDADE>=18  || ACOMPANHADO -> true

IDADE = 19, ACOMPANHADO = TRUE
IDADE>=18  || ACOMPANHADO -> true

IDADE = 15, ACOMPANHADO = FALSE
IDADE>=18  || ACOMPANHADO -> false

IDADE = 14, ACOMPANHADO = TRUE
IDADE>=18  || ACOMPANHADO -> true

Dica: Pesquisa por tabela verdade.

Outro exemplo, pseudocodigo:

SE <EXPRESSAO-FOR-VERDADE> ENTAO
    FAZ ALGO
SENAO
    FAZ ALGO DIFERENTE
FIM

Fonte: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

muito obrigado : )