Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Implementação Exercicio IR

Bom dia, não sei se está correto desta forma, porém para evitar uma lacuna em valores informados fora dos passados pela tabela, coloquei o primeiro if para estes.

public class ExercicioIR {
    public static void main(String[] args) {

        double salario = 3000.0;        

        if (salario < 1900 || salario > 4664.0) {
            System.out.println("Não existe ou não foi informado desconto para esse salário.");
        }

                if (salario >= 1900.0 && salario <= 2800.0) {
                    System.out.println("O IR é de 7.5% e pode deduzir na declaração o valor de R$ 142.");

                } else {

                        if (salario > 2800.0 && salario <= 3751.0) {
                        System.out.println("O IR é de 15% e pode deduzir na declaração o valor de R$ 350.");
                        } else {
                                if (salario > 3751.0 && salario <= 4664.0)
                                System.out.println("O IR é de 22.5% e pode deduzir na declaração o valor de R$ 636.");
                            }

                        }

    }
}
6 respostas
solução

Boa noite, Hugo! Como vai?

Excelente ideia! Contudo, perceba que mesmo passando um valor menor que 1900 os ifs que verificam a alíquota serão verificados.

Sendo assim, a título de desafio e exercício dos conhecimentos adquiridos, vc conseguiria melhorar o código de modo que se o salário for menor que 1900 ou maior que 4664, apenas o primeiro if seja verificado e os demais não?

Qualquer coisa, se precisar de alguma ajuda, é só falar!

Grande abraço e bons estudos, meu aluno!

Boa tarde, Gabriel, tudo ótimo e vc? Percebi, pela sua sugestão, que poderia concatenar o segundo "if" dentro do "else" neste primeiro bloco que coloquei sendo a exceção. Desta forma, já que o break não funciona neste condicional específico com ifs, isso seria o suficiente para que os demais if não fossem verificados?

public class ExercicioIR {
    public static void main(String[] args) {

        double salario = 3750.0;        

        if (salario < 1900 || salario > 4664.0) {
            System.out.println("Não existe ou não foi informado desconto para esse salário.");

        } else if (salario >= 1900.0 && salario <= 2800.0) {
                System.out.println("O IR é de 7.5% e pode deduzir na declaração o valor de R$ 142.");
                } else if (salario > 2800.0 && salario <= 3751.0) {
                    System.out.println("O IR é de 15% e pode deduzir na declaração o valor de R$ 350.");
                    } else if (salario > 3751.0 && salario <= 4664.0)
                        System.out.println("O IR é de 22.5% e pode deduzir na declaração o valor de R$ 636.");
    }
}

Sim, exatamente!!!

Boa, Hugo! É isso aí!

Apenas como uma última dica, sempre preste a atenção na indentação de seu código e no correto chaveamento que define os blocos!

Por exemplo, em relação à indentação, perceba que todos os else ifs deveriam estar na mesma direção! Além disso, no último else if, o melhor seria colocar as chaves que definem o bloco de código desse cara! Remover as chaves funciona quando só há um comando dentro do if, mas as vezes remover elas pode confundir um pouco as coisas! Principalmente para quem está dando os primeiros passos no sertão do Java!

O código com as correções que eu sugeri, ficaria assim:

public class ExercicioIR {
    public static void main(String[] args) {

        double salario = 3750.0;        

        if (salario < 1900 || salario > 4664.0) {
            System.out.println("Não existe ou não foi informado desconto para esse salário.");

        } else if (salario >= 1900.0 && salario <= 2800.0) {
            System.out.println("O IR é de 7.5% e pode deduzir na declaração o valor de R$ 142.");
        } else if (salario > 2800.0 && salario <= 3751.0) {
            System.out.println("O IR é de 15% e pode deduzir na declaração o valor de R$ 350.");
        } else if (salario > 3751.0 && salario <= 4664.0) {
            System.out.println("O IR é de 22.5% e pode deduzir na declaração o valor de R$ 636.");
        }
    }
}

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Bom dia Gabriel, lembro-me desta orientação sobre o uso facultativo das chaves com 1 linha de comando, mas que pela questão de boas práticas é recomendada a utilização, porém passou despercebido por mim. Farei os ajustes no código de acordo com as sugestões. Muito obrigado pela atenção.

Por nada, Hugo! Sempre que tiver qualquer dúvida é só mandar aqui no fórum da Alura!

Grande abraço e bons estudos, meu aluno!