1
resposta

Java

Amigos, bom dia!

Vocês podem me explicar o que significa o ponto de exclamação(!) no método abaixo:

public boolean aplicaDescontoDe(double porcentagem) {

    if(porcentagem>0.3) {
        
        return false;
    }
    
this.valor -= this.valor*porcentagem;
        

            return true;
}

if(!livro.aplicaDescontoDe(0.7)) {

        System.out.println("Desconto não pode ser maior que 30%");
    }else {
        
        System.out.println("Valor com desconto: " +livro.getvalor());
        
        
        
    }
    
    
    Eu estou entendendo que o (!) significa que se o aplicaDescontode no parametro não for até 30% não haverá desconto.
Está correto a interpretação
    Obrigado
    
    Rodrigo
1 resposta

Bom dia Rodrigo, a exclamação no Java simboliza o operador lógico de negação, ou seja, ele inverte o valor lógico, então como o método aplicaDescontoDe retorna verdadeiro ou falso, com a negação, quando ele retorna verdadeiro ele inverte para falso e assim também com o falso para verdadeiro. No seu exemplo, a estrutura condicional sempre espera o valor falso, pois quando o método retorna falso, o desconto é maior que 30%, a exclamação inverte para verdadeiro, assim entrando no bloco de código do if, caso o método retorne verdadeiro, a exclamação invere o valor para falso e é executado o else.