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

Minha resolução! -

Analisei a questão de forma lógica. Foi apresentado um range. ou seja, uma janela de valores Sendo elas

valor minimo - 1.900,00 valor máxim - 4.664,00

*janela minima e máxima de forma macro.

o mesmo para os valores de deduções menor dedução - 142,00 maior dedução- 636,00

*janela minima e máxima de forma macro.

após isso, me perguntei acerca dos valores que não podem ser encontradas nessa janela. Então pensei em considerar os valores que não se encontram como "não haverá deduções"para valores abaixo de 1.900,00 e considerar a dedução de 869,00 para valores acima de 4.664,01. (essa dedução de 869,00 é ref. a alíquita de 27,5%)

Meu código, então, ficou assim.

package sintaxe_variaveis_e_fluxo;

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

        double salario = 3300.0;

        double menorDeducao = 142.0;
        double mediaDeducao = 350.0;
        double maiorDeducao = 636.0;
        double deducaoMaxima = 869.0;

        if (salario < 1900.0) {
            System.out.println("Não haverá deduções");
        }
        if (salario >= 1900.0 && salario <= 2800.0) {
            System.out.println("A dedução será de " + menorDeducao);
        }
        if(salario >= 2800.01 && salario <= 3751.0) {
            System.out.println("A dedução será de " + mediaDeducao);
        }
        if(salario >= 3751.01 && salario <= 4664.00){
            System.out.println("A dedução será de " + maiorDeducao);
        }
        if(salario > 4664.01) {
            System.out.println("A dedução será de " + deducaoMaxima);
        }
    }

}

me ajudem e deixem feedback para melhorias!! :D

2 respostas
solução!

Fala Lucas, de boa ?

Cara sua implementação está super certa, tem alguns pontos que talvez daria para deixar o código mais "enxuto" :

        if (salario < 1900.0) {
            System.out.println("Não haverá deduções");
        }
        else if (salario <= 2800.0) {
            System.out.println("A dedução será de " + menorDeducao);
        }
        else if(salario <= 3751.0) {
            System.out.println("A dedução será de " + mediaDeducao);
        }
        else if(salario <= 4664.00){
            System.out.println("A dedução será de " + maiorDeducao);
        }
        else {
            System.out.println("A dedução será de " + deducaoMaxima);
        }

Dessa maneira você evita que o programa fica fazendo diversas comparações, assim que ele encontrar o valor ele termina de executar.

Mto obrigado!!!