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

Meu código pronto

public class TesteIR {

public static void main(String[] args) {

    double salario = 3300.0;
    boolean grupo1 = salario >= 1900.0 && salario <= 2800.0;
    boolean grupo2 = salario >= 2800.0 && salario <= 3751.0;
    boolean grupo3 = salario >= 3751.01 && salario <= 4664.0;

    if (salario >= 1900.0 && grupo1) {

        salario = salario - 142.0;
        System.out.println(
                "A alíquota deduzida da sua declaração foi de 7.5%, ou seja R$142,00, sobrando: " + salario);

    } else {
        if (salario >= 2800.0 && grupo2) {

            salario = salario - 350.0;
            System.out.println(
                    "A alíquota deduzida da sua declaração foi de 15%, ou seja R$350,00, sobrando: " + salario);

        } else {
            if (salario >= 3751.01 && grupo3) {

                salario = salario - 636.0;
                System.out.println("A alíquota deduzida da sua declaração foi de 22.5%, ou seja R$636,00, sobrando: " + salario);

            } else {

                System.out.println("Sua renda não se encaixa nos parâmetros para dedução do IR.");

            }

        }

    }

}

}

Queria saber se esta seria a melhor forma, não consegui colocar o operador lógico dentro dos if's.

3 respostas
solução!

Oi Camila, tudo bem?

A forma como você resolveu o exercício está correta, porém existem alguns pontos que podemos melhorar. O primeiro ponto é a forma como você foi declarando as condições. Você percebe que a cada else if que você declara, seu código vai ficando "quebrado", como se estivesse descendo uma escada? Isso pode prejudicar a arquitetura do seu código, a forma como você organiza esses if's pode facilitar muito a sua vida na hora da leitura e da compreensão dos blocos, e fazer isso muitas vezes pode te prejudicar.

Eu recomendo que toda vez que você for inserir um else if, você os coloque na mesma linha, evitando que seu código fique "quebrado", então eu fiz algumas alterações que podem melhorar seu código:

if (salario >= 1900.0 && grupo1) {
    salario = salario - 142.0;
    System.out.println("A alíquota deduzida da sua declaração foi de 7.5%, ou seja R$142,00, sobrando: " + salario);
} else if (salario >= 2800.0 && grupo2) {
    salario = salario - 350.0;
    System.out.println("A alíquota deduzida da sua declaração foi de 15%, ou seja R$350,00, sobrando: " + salario);
} else if (salario >= 3751.01 && grupo3) {
    salario = salario - 636.0;
    System.out.println("A alíquota deduzida da sua declaração foi de 22.5%, ou seja R$636,00, sobrando: " + salario. "Caso contrário, sua renda não se encaixa nos parâmetros para dedução do IR.");
}

E quanto ao último else, você pode substituí-lo por apenas alterar a última linha que mostra uma mensagem, já que é a última regra da alíquota e a partir desse valor a renda não vai mais se encaixar nos parâmetros.

Espero ter te ajudado, e bons estudos =)

Olá camila, tudo bom?

Uma sugestão seria colocar as variáveis grupo1, etc.. diretamente dentro do if, como está abaixo. Essas variáveis retornam apenas true ou false.

public static void main(String[] args) {

    double salario = 3300.0;
    boolean grupo1 = salario >= 1900.0 && salario <= 2800.0;
    boolean grupo2 = salario >= 2800.0 && salario <= 3751.0;
    boolean grupo3 = salario >= 3751.01 && salario <= 4664.0;

    if (grupo1) {

        salario = salario - 142.0;
        System.out.println(
                "A alíquota deduzida da sua declaração foi de 7.5%, ou seja R$142,00, sobrando: " + salario);

public class TesteIR {

public static void main(String[] args) {

    double salario = 3751.01;
    boolean grupo1 = salario >= 1900.0 && salario <= 2800.0;
    boolean grupo2 = salario >= 2800.0 && salario <= 3751.0;
    boolean grupo3 = salario >= 3751.01 && salario <= 4664.0;

    if (grupo1) {

        salario = salario - 142.0;
        System.out.println(
                "A alíquota deduzida da sua declaração foi de 7.5%, ou seja R$142,00, sobrando: " + salario);

    } else if (grupo2) {

        salario = salario - 350.0;
        System.out.println(
                "A alíquota deduzida da sua declaração foi de 15%, ou seja R$350,00, sobrando: " + salario);

    } else if (grupo3) {

        salario = salario - 636.0;
        System.out.println("A alíquota deduzida da sua declaração foi de 22.5%, ou seja R$636,00, sobrando: " + salario +
                "\nCaso contrário, sua renda não se encaixa nos parâmetros para dedução do IR.");

    }

}

}

Pessoal, ficou muito bom e mais enxuto código. Agradeço a vocês.