1
resposta

Alíquota com ifs

Olá! Estou com uma dúvida no meu código que deveria dar como resultado os seguintes valores: A sua aliquota é de 15% Você pode deduzir até R$ 350

Ao invés disso ele mostra o resultado: A sua aliquota é de 15% Você pode deduzir até R$ 350 A sua aliquota é de 22.5% Você pode deduzir até 636

Como posso resolver?

Segue abaixo o código:

public class TestandoIR2 {

    public static void main(String[] args) {

        double salario = 3300;

        if(salario >= 1900.0 && salario <= 2800.0) {
            System.out.println("A sua aliquota é de 7.5%");
            System.out.println("Você pode deduzir até R$ 142");

        } else if(salario >= 2800.01 && salario <= 3751.0) {
            System.out.println("A sua aliquota é de 15%");
            System.out.println("Você pode deduzir até R$ 350");

         } else if (salario >= 3751.01 && salario <= 4664.0); {
                System.out.println("A sua aliquota é de 22.5%");
                System.out.println("Você pode deduzir até 636");

         }
    }

}

1 resposta

Olá Kamila,

Depois do statement do último else if você acabou colocando um ponto e vírgula, sinalizando ao compilador que o comando foi finalizado. Com a abertura das chaves, você abriu um bloco de código para ser executado após o último comando. Como a condicional foi finalizada devido ao ";", então o programa executou o último bloco que imprime as informações no console. Para resolver, basta retirar o ";" após a condicional do último else if.

Uma dica: muitas vezes encadear vários ifs e elses num mesmo bloco acaba dificultando muito a refatoração. Uma maneira mais simples seria escrever apenas ifs, sem encadeamento, como abaixo. Isso facilita bastante quando precisamos realizar o debug e procurar por erros.

public static void main(String[] args) {

    double salario = 3300;

    if (salario >= 1900.0 && salario <= 2800.0) {
        System.out.println("A sua aliquota é de 7.5%");
        System.out.println("Você pode deduzir até R$ 142");

    } 

    if (salario >= 2800.01 && salario <= 3751.0) {
        System.out.println("A sua aliquota é de 15%");
        System.out.println("Você pode deduzir até R$ 350");
     } 

     if (salario >= 3751.01 && salario <= 4664.0) {
            System.out.println("A sua aliquota é de 22.5%");
            System.out.println("Você pode deduzir até 636");
     }

}

Espero ter ajudado e bons estudos!