Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Limitação do comando switch

Para o exemplo da aliquota de imposto de renda (abaixo), esse comando não resolve para retirar o encadeamento de if's, pois, pela mensagem de erro que vi no Eclipse, só se pode utilizar variáveis int, double ou enum. E também não é possível colocar uma expressão lógica no case. Teria alguma outra forma de usar o comando switch para esse caso?

        double salario = 2570.0;

        boolean aliquota1 = salario >= 1900.00 && salario <= 2800.00;
        boolean aliquota2 = salario >= 2800.01 && salario <= 3751.00;
        boolean aliquota3 = salario >= 3751.01 && salario <= 4664.00;

        if (aliquota1) {
            System.out.println("IR de 7,5%");
        } else {
            if (aliquota2) {
                System.out.println("IR de 15%");
            } else {
                if (aliquota3) {
                    System.out.println("IR de 22,5%");
                }
            }
        }
1 resposta
solução!

Ola tudo bem? Primeiramente, no switch podemos apenas colocar argumentos int, String e Enum ou seja seu double salario = 2570.0; não poderia ser colocado na condição.

Não recomendo utilizar o switch nesse caso, mas podemos melhorar seus ifs.

double salario = 4600.0;

        if (salario >= 1900.00 && salario <= 2800.00) {
            System.out.println("IR de 7,5%");
        } else if(salario >= 2800.01 && salario <= 3751.00) {
            System.out.println("IR de 15%");
        }else if (salario >= 3751.01 && salario <= 4664.00) {
            System.out.println("IR de 22,5%");
        }

Lembre-se sempre que o argumento de um If recebe boolean portanto a expressão pode estar dentro dele.