1
resposta

Resoulção do Exercício

Boa noite,

Poderiam me auxiliar com a resolução desse exercício? Usei apenas if e else, porém ele apresenta dois resultados no final, gostaria que alguém me mostrasse qual é o erro de lógica para que eu possa aprender e corrigir.

public class TesteIR {

    public static void main(String[] args) {

        double salario = 3300.0;

        if (salario < 1900.0) {
            System.out.println("Insento");

        } else {

            if (salario >= 2800.0) {
                System.out.println("O IR é de 7.5% e pode deduzir na declaração o valor de R$ 142");
            }
        }

        if (salario <= 2800.01) {
            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");
            }
        }
        if (salario <= 3751.01) {
            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");
            }
        }
    }
}

//      De 1900.0 até 2800.0, o IR é de 7.5% e pode deduzir na declaração o valor de R$ 142
//       De 2800.01 até 3751.0, o IR é de 15% e pode deduzir R$ 350
//        De 3751.01 até 4664.00, o IR é de 22.5% e pode deduzir R$ 636
1 resposta

Boa Tarde Gustavo,

Segue o teu código comentado.

public static void main(String[] args) {

        double salario = 3300.0;

        if (salario < 1900.0) { //Falso salario maior
            System.out.println("Insento");

        } else {

            if (salario >= 2800.0) { // verdadeiro então entra aqui
                System.out.println("O IR é de 7.5% e pode deduzir na declaração o valor de R$ 142"); 
            }
        } // fim do bloco

        if (salario <= 2800.01) { // Falso salario maior
            System.out.println("O IR é de 7.5% e pode deduzir na declaração o valor de R$ 142");
        } else {

            if (salario >= 3751.0) { //Falso salario menor que 3751 não entra aqui tbm
                System.out.println("O IR é de 15% e pode deduzir R$ 350"); 
            }
        } //fim do bloco

        if (salario <= 3751.01) { // verdadeiro salario menor que 3751
            System.out.println("O IR é de 15% e pode deduzir R$ 350 x");// entrou aqui
        } else { // codigo não executado por causa que já entrou no if /\
            if (salario >= 4664.00) {
                System.out.println("O IR é de 22.5% e pode deduzir R$ 636");
            }
        } //fim do bloco
    }

Tenta algo assim

public static void main(String[] args) {

        double salario = 3300.0;

        if (salario >= 1900.0 && salario <= 2800.0) {  //De 1900.0 até 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){ //2800.01 até 3751.0
            System.out.println("O IR é de 15% e pode deduzir R$ 350"); 

        }else if(salario >= 3751.01 && salario <= 4664.00){ //De 3751.01 até 4664.00
            System.out.println("O IR é de 22.5% e pode deduzir R$ 636"); 

        }