Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

POSSO RESOLVER ASSIM?

Pensei dessa forma. Posso resolver assim, ou esse tipo de código pode me gerar problemas futuros no Java?

public class TesteIR {

    public static void main(String[] args) {

        double salario = 3300.0;

        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");
        } if(salario>=2800.01 && salario<=3751.0) {
            System.out.println("o IR é de 15% e pode deduzir R$ 350");
        } if(salario>=3751.01 && salario<=4664.0) {
            System.out.println("o IR é de 22.5% e pode deduzir R$ 636");
        }
    }
}
1 resposta
solução!

Oioi Amanda! Tudo certo?

Sua implementação está muito boa e resolve muito bem o problema. Porém, há um jeito de deixá-la ainda mais eficiente que é utilizar o else, assim:

public class TesteIR {

    public static void main(String[] args) {

        double salario = 3300.0;

       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<=3751.0) {
            System.out.println("o IR é de 15% e pode deduzir R$ 350");
        } else if( salario<=4664.0) {
            System.out.println("o IR é de 22.5% e pode deduzir R$ 636");
        }
    }
}

Isso porque, se você faz váriosifs, tem que verificar algumas coisas 2 vezes. Ao utilizar o else if, a linguagem já entende que a verificação anterior não precisa ser feita e analisa apenas as opções seguintes. De que forma? No código que eu deixei acima, é feita a primeira verificação (se o salário está entre R$1900,00 e R$2800) e, ao usar o else if, automaticamente estamos pensando apenas em opções que estão acima de R$2800 e precisamos apenas verificar que são menores que R$3751.

Uma observação importante também é que, usando o meu código, seria legal colocar uma opção para tratar salários menores que R$1900,00, pois a segunda e a terceira verificações poderiam dar verdadeiro (algo que não desejamos):

public class TesteIR {

    public static void main(String[] args) {

        double salario = 3300.0;

        if(salario >=0.0 && salario < 1900.0) {
            System.out.println("Você está isento");
        } else if (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<=3751.0) {
            System.out.println("o IR é de 15% e pode deduzir R$ 350");
        } else if( salario<=4664.0) {
            System.out.println("o IR é de 22.5% e pode deduzir R$ 636");
        }
    }
}

Ahh! Uma outra coisa que deixei no código foi que você concatenou duas strings ao quebrar a linha. Para Java, a quebra de linha não é relevante. Então podemos passar para a próxima linha sem precisar de concatenar as strings.

Espero ter ajudado. Qualquer dúvida, estou aqui!

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software