1
resposta

u coloquei || no lugar do && ai não sai da primeira condição porque?

if(salario >= 1903.99 || salario <= 2826.65 ) { System.out.println("A sua aliquota é de 7,5%"); System.out.println("Seu salario é de " + salario + " e tem que deduzir R$ 142,80"); } else if(salario >= 2826.66 || salario <= 3751.05) { System.out.println("A sua aliquota é de 15%"); System.out.println("Seu salario é de " + salario + " e tem que deduzir R$ 354,80"); } else if(salario >= 3757.06 ||salario <= 4664.68) { System.out.println("A sua aliquota é de 22,5%"); System.out.println("Seu salario é de " + salario + " e tem que deduzir R$ 636,13"); }

1 resposta

Boa tarde Bruno, vamos analisar o seu código:

if (salario >= 1903.99 || salario <= 2826.65) {
    System.out.println("A sua aliquota é de 7,5%");
    System.out.println("Seu salario é de " + salario + " e tem que deduzir R$ 142,80");
}
else if (salario >= 2826.66 || salario <= 3751.05) {
    System.out.println("A sua aliquota é de 15%");
    System.out.println("Seu salario é de " + salario + " e tem que deduzir R$ 354,80");
}
else if (salario >= 3757.06 || salario <= 4664.68) {
    System.out.println("A sua aliquota é de 22,5%");
    System.out.println("Seu salario é de " + salario + " e tem que deduzir R$ 636,13");
}

Na primeira condição você está dizendo que se o salário for maior ou igual a 1903.99 OU o salário for menor ou igual a 2826.65, ela será executada, o problema é que se o salário for 3000, esse if já será executado e a sua alíquota será 7,5%, pois só pelo fato dele ser maior que 1903.99, essa condição já é ativada porque você usou " || " ao invés de "&&".

Basicamente, se você utilizar "||" você está querendo dizer que se a condição A OU a condição B forem verdadeiras, ela será ativada. Agora se você utilizar "&&" você está pedindo que aquela condição só será executada se AMBAS as condições forem verdadeiras.

Se ficou com alguma dúvida sobre algo que eu disse, fique a vontade para questionar. Espero tê-lo ajudado e tenha uma boa tarde.