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

Isso eh errado ?

Eh errado eu apresentar uma sequencia de if`s e não de else if ?

public class testaIR {

    public static void main(String[] args) {
        System.out.println("Calculando o seu IR...");
        double salario = 4664.0;
        double porcentagem;
        if(salario>= 1900.0 && salario<=2800.0) {
            porcentagem = 7;
            System.out.println("A sua aliquota é de " + porcentagem);
            System.out.println("Você pode deduzir até R$ 142");

        }
        if(salario>=2800.01 && salario<=3751.0) {
            porcentagem = 15;
            System.out.println("A sua aliquota é de " + porcentagem);
            System.out.println("Você pode deduzir até R$ 350");
        }
        if(salario>=3751.01 && salario<=4664.0) {
            porcentagem = 22.5;
            System.out.println("A sua aliquota é de " + porcentagem);
            System.out.println("Você pode deduzir até R$ 636");

        }
        if(salario<1900.0 || salario >4664.0) {
            System.out.println("Seu imposto de renda nao "
                    + "foi especificado");
        }

    }
}

Não entendi muito bem o funcionamento do else if(...){}.

2 respostas
solução!

Daniel,

O código funciona do mesmo jeito.

Porem quando utilizamos uma sequencia de ifs como você fez mesmo que o primeiro se atendido ele fará a validação dos demais.

Quando colocamos if encadeados com else significa que quando o primeiro for atendido ele não validará as demais regras.

Exemplo:

x = 1

if(x=1) { //codigo } if(x=2) { //codigo }

Neste exemplo, o x é igual a um então ele vai validar o primeiro if e executar todo o codigo dentro pois é verdadeiro. Depois ele vai cair no segundo if e verificar que é falso.

x = 1

if(x=1) { //codigo } else if(x=2) { //codigo }

Neste segundo caso quando ele executar o codigo dentro do primeiro if ele não vai fazer a validação do segundo if.

Neste segundo caso ganhamos em performance.

Errado não é, mas uma boa prática (nesse caso) é fazer um else if.

Quando se tem um else if, ele só será lido se o if anterior for negativo.

Caso 1:

x=1
        if(x>0) {
        }
        else    if(x<0) {
                }
                   else     if(x=0) {
                        }

Caso 2:

x=0
        if(x>0) {
        }
        else    if(x<0) {
            }
                else     if(x=0) {
                    }

No caso 1, somente o primeiro if será lido, pois ele é Verdadeiro. No caso 2, os 3 if serão lidos, pois os 2 primeiros são Falsos.

É melhor nesse caso (onde todos os IFs tem relação direta), usar o else if para economizar recursos, mesmo que mínimos.