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

variavel double no switch

public static void main(String[] args) {
    // De 1900.00 até 2800.00, o IR é de 7,5%
    // De 2800.01 até 3751.00, o IR é de 15%
    // De 3751.01 até 4664.00, o IR é de 22,5%
    double salario = 2699.0;
    double deducao75 = salario * 0.075;
    double deducao15 = salario * 0.15;
    double deducao225 = salario * 0.225;

    switch(salario) {
        case salario <= 2800.0:
            System.out.println("A sua alíquota é de 7,5%");
            System.out.println("Sua dedução de IR é de R$ " + deducao75);
            break;
        case salario >= 2800.01 && salario <= 3751.0: 
            System.out.println("A sua alíquota é de 15%");
            System.out.println("Sua dedução de IR é de R$ " + deducao15);
            break;
        case salario >= 3751.01:
            System.out.println("A sua alíquota é de 22,5%");
            System.out.println("Sua dedução de IR é de R$ " + deducao225);
            break;
    }
}

Tentei reescrever o teste de aliquota com switch mas o eclipse me informou que nao posso utilizar o double como variavel ha alguma forma de faze-lo ? ou tem algum outro erro que nao vejo?

2 respostas

Olá Samuel, tudo bem com você?

O que o seu código está fazendo é comparar o salario que você passou como argumento para o comando switch switch(salario) e comparando ele com os "cases". O problema é que salario é do tipo double, enquanto as condições que colocamos após cada "case" retorna um valor booleano true ou false e, por conta disso, o Java está reclamando que não consegue comparar um valor do tipo double com um valor booleano!

Resumindo: tanto o valor a ser comparado pelo switch quanto os valores passados em cada "case" devem ser do mesmo tipo para que o comando switch funcione! Portanto, nesse caso, recomendo usar o if-else mesmo.

Espero ter ajudado. Se ficou alguma dúvida é só avisar!

Forte abraço e bons estudos!!

solução!

Entendi. Obrigado...