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

[Sugestão] Compartilhando minha solução

Sintaticamente errei em algum lugar ? ** **Quais as possibilidades de melhoria deste código ?

public class AlíquotaComIfs {
    public static void main(String[] args) {
        double salario = 3751.01;

        System.out.println("Olá o valor setado em salário é: " + salario);

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

    }
}
2 respostas
solução!

Olá Fagner, tudo bem com você?

Muito legal a sua solução, obrigado por compartilhar conosco aqui no fórum!

Não há nenhum erro sintático, ele funciona muito bem!

A dica que tenho pra deixar pra você é sobre os seus comandos condicionais e a estrutura if-elseif-else:

Em alguns momentos, a condição está um pouco redundante, isso é, poderia ser reduzida para facilitar a legibilidade, por exemplo na linha:

    if (salario <= 0.0 || salario < 1900.0)

Quando verificamos que o salário é menor que 1900 ele já pode ser menor ou igual a 0, pois todos os números menores ou iguais a zero são menores que 1900, ou no caso seria salario >= 0?

A partir disso, caso seja satisfeita a condição do if, o Java vai executar o bloco de código e ignorar os else ifs. Caso ele passe para a próxima verificação, nós já sabemos que ele é maior do que 1900. Ou seja, na linha

    else if (salario >= 1900.0 && salario <= 2800.0) 

Nós podemos retirar a verificação salario >=1900 e deixar apenas salario <= 2800, assim:

else if (salario <= 2800.0) 

nesse momento, sabemos que se o salário for menor do que 1900, ele entrará na primeira condição e caso seja maior que 1900, mas menor que 2800, entrará na segunda condição. Seguindo com essa linha de pensamento, caso ele seja maior que 2800, não há a necessidade de fazer duas verificações, pelo mesmo motivo dito anteriormente, então o código final poderia ficar assim:

public class AlíquotaComIfs {
    public static void main(String[] args) {
        double salario = 3751.01;

        System.out.println("Olá o valor setado em salário é: " + salario);

        // ou if (salario >= 0 && salario < 1900.0)

        if (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.00) {
            System.out.println("o IR é de 22.5% e pode deduzir R$ 636");
        }

    }
}

Outro ponto interessante, é a identação do código. Por convenção, mantemos os Ifs, Else Ifs e Else na mesma identação, ou seja, na mesma coluna, como no código acima. Isso facilita a legibilidade, pois basta bater o olho na coluna e veremos todos os condicionais que fazem parte de um mesmo bloco.

Novamente, obrigado por compartilhar conosco a sua solução e parabéns pela dedicação! Lembre-se sempre que pode contar com o fórum para tirar suas dúvidas e compartilhar sua evolução, nós adoramos ficar a par dela!

Um grande abraço e bons estudos!

Show, Arthur gratidao pelos ensinamentos, irei absorver tudo valeu !

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