3
respostas

[Projeto] Exercício TesteIR

public static void main(String[] args) { System.out.println("Calculo de Imposto de Renda");

    double salario = 2200;

    if (salario >= 0 && salario <= 1903.97) {
        System.out.println("Isento de imposto");
    }else if (salario >= 1903.98 && salario <= 2826.65) {
        System.out.println("Alíquota de 7.5%");
        System.out.println("Valor a deduzir do IR é de 142 reais");
    } else if (salario >= 2826.66 && salario <= 3751.06) {
        System.out.println("Alíquota de 15%");
        System.out.println("Valor a deduzir do IR é de 350 reais");
    } else if (salario >= 3751.07 && salario <= 4664.68) {
        System.out.println("Alíquota de 22.5%");
        System.out.println("Valor a deduzir do IR é de 636 reais");
    } else if (salario >= 4664.69) {
        System.out.println("Alíquota de 27.5%");
        System.out.println("Valor a deduzir do IR é de 869.36 reais");
    }

}

}

3 respostas

Olá Yankee, tudo bem com você?

Muito legal a sua solução pro exercício! O código ficou bem coeso e "direto ao ponto", o que facilita a sua leitura!

Uma sugestão que tenho, é que ao utilizar os else-if, é interessante dentro do condicional verificar o conjunto de dados que vão passar como verdadeiros, para facilitar ainda mais a leitura e entendimento do código, além de evitar possíveis problemas de lógica. Dentro dos condicionais:

else if (salario >= 3751.07 && salario <= 4664.68) {
        System.out.println("Alíquota de 22.5%");
        System.out.println("Valor a deduzir do IR é de 636 reais");
    } else if (salario >= 4664.68) {
        System.out.println("Alíquota de 27.5%");
        System.out.println("Valor a deduzir do IR é de 869.36 reais");
    }

Note que dentro do primeiro else if, é feita a verificação salario <= 4664.68 e dentro do segundo else if, é feita a verificação salario >= 4664.68. Isso causa um conflito de conjuntos, uma vez que teoricamente, se o salario for igual a 4664.68, ele deveria passar nas duas condições. Pela estrutura dos comandos condicionais, ele vai cair no primeiro bloco, verificar que é verdadeiro e não irá executar o outro, trazendo o resultado esperado da execução do programa. No entanto, é interessante evitar esse tipo de duplicidade na hora de escrever o código, pois pode dificultar sua leitura e manutenção!

Parabéns pela sua dedicação e obrigado por compartilhar com a gente aqui no fórum, você pode contar sempre com o fórum para tirar suas dúvidas e compartilhar sua evolução!

Um grande abraço e bons estudos!

Opa Arthur tudo bom, neste caso se fosse trocado =>4664.68 por =>4664.69, resolveria o problema certo ?

Fala Yankee!

Poderia ser! Uma outra maneira é utilizar o else, pois já foi verificado anteriormente que o salario é positivo, e não está em nenhum outro conjunto que resultaria em outra alíquota. Sendo assim, se ele não entrou em nenhuma outra condição, certamente ele é maior do que 4664.68!

Um grande abraço e bons estudos!