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

Diferença entre declarar as variáveis antes || fazer a operação lógica dentro do If

Olá! Vi que a maioria das pessoas fazem a operação lógica com os valores do problema. Gostaria de saber qual o impacto de declaras as variáveis com os valores e fazer as operações com essas variáveis, ou já fazer direto as operações lógicas dentro dos IFs. A validação que eu fiz foi assim:

public class TesteIR {

    public static void main(String[] args) {

        //De 1900.0 até 2800.0, o IR é de 7.5% e pode deduzir na declaração o valor de R$ 142
        //De 2800.01 até 3751.0, o IR é de 15% e pode deduzir R$ 350
        //De 3751.01 até 4664.00, o IR é de 22.5% e pode deduzir R$ 636

        double salario = 2900.0;
        double faixa1Minimo = 1900.00;
        double faixa1Maximo = 2800.00;
        String faixa1IR = "O IR é de 7.5% e pode deduzir na declaração o valor de R$ 142.";
        double faixa2Minimo = 2800.01;
        double faixa2Maximo = 3751.00;
        String faixa2IR = "O IR é de 15% e pode deduzir R$ 350.";
        double faixa3Minimo = 3751.01;
        double faixa3Maximo = 4664.00;
        String faixa3IR = "O IR é de 22.5% e pode deduzir R$ 636.";

        if (salario >= faixa1Minimo && salario <= faixa1Maximo) {
            System.out.println(faixa1IR);
        } else {
            if (salario >= faixa2Minimo && salario <= faixa2Maximo) {
                System.out.println(faixa2IR);
            } else {
                if (salario >= faixa3Minimo && salario <= faixa3Maximo) {
                    System.out.println(faixa3IR);
                }
            }
        }
    }

}
2 respostas
solução!

Boa noite Alison!

O impacto de fazer dessa forma é que você está criando variáveis que nunca serão usadas que estarão ocupando espaço desnecessário na memória da JVM. Nessa aplicação didática não precisamos nos preocupar com memória, porém em uma aplicação real e grande pode ser que sim.

Só uma observação no seu código onde tem os if, você pode fazer assim:

if (salario >= faixa1Minimo && salario <= faixa1Maximo) {
            System.out.println(faixa1IR);
        } else if(salario >= faixa2Minimo && salario <= faixa2Maximo) {
                System.out.println(faixa2IR);
        } else {
                    System.out.println(faixa3IR);
}

Ele verifica a condição do primeiro if, se for false vai para a próxima condição else if, se for false também executa o que está no else.

Espero que tenha ajudado, abraço!

Muito obrigado Gabriel!