Eu fiz o código usando "||" e não deu certo. mas quando eu usei o "&&" funcionou. Porque? Alguém poderia me explicar. Desde já agradeço.
Eu fiz o código usando "||" e não deu certo. mas quando eu usei o "&&" funcionou. Porque? Alguém poderia me explicar. Desde já agradeço.
Olá Sérgio, tudo certo?
Você pode colocar o código que você usou o "||" para tentarmos ver o que pode estar errado?
Basta clicar no botão inserir código e colocar ele aqui.
public class TesteIR {
public static void main(String[] args) {
System.out.println("Declaração de Imposto de renda.");
double salario = 2880.0;
if (salario >= 1900.0 || salario <= 2800.0) {
System.out.println("Sua aliquota desse ano é de 7.5%= R$142.00");
} else if (salario >= 2800.01 || salario <= 3751.0) {
System.out.println("Sua aliquota desse ano é de 15%= R$350.00");
} else if (salario >= 3751.01 || salario <= 4664.0) {
System.out.println("Sua aliquota desse ano é de 22.5%= R$636.00");
} else
System.out.println("Isento do IR");
}
}
}
Olá Sérgio.
Vi aqui que você esqueceu de abrir as chaves no último else, por isso o erro de compilação.
Espero ter ajudado.
Mas ai que tah. Esse ultimo else não esta influenciando em nada quando compila. Pode fazer o teste sem ele por exemplo. E foi justamente o que eu fiz. E quando eu coloco esse mesmo codigo com o "&&" , da certo.
Sergio,
Esse seu erro seria o que exatamente?
Um erro que de lógica (saiu um valor que você não esperava)
ou
Um erro de compilação (o código não executou)
De qualquer forma mostre o que saiu no console ao executar o seu código.
Opa Sérgio, acho que entendi a sua dúvida.
De acordo com o valor da variável salário, era de se esperar que o valor impresso fosse o da alíquota de 15%, só que ele imprime a alíquota de 7,5%. Esse seu exemplo ele só fuciona se for utilizado o operador 'E' (&&), pois as duas condições tem que ser verdadeiras para que o if seja verdadeiro. No caso do operador 'OU' ||, apenas umas das opções tem que ser verdadeira para que o if seja verdadeiro.
No seu exemplo, quando utilizado o || , o 'salario >= 1900.0' já é verdadeiro, então a condição está satisfeita, portanto é realizada.
Resumindo, o erro não está na compilação, mas sim do jeito que você escreveu ele.