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

Switch foi dado como opção aos ifs e elses, porém não consegui compilar.

Por favor, onde errei nesse código? Como se trata também de faixa salarial, não posso usar o double no switch? como eu poderia fazer sem usar ifs encadeados e sim por opções? pelo if eu consegui

import java.util.Scanner;

public class EntradaScanner {

    public static void main(String[] args) {


        Scanner scan = new Scanner(System.in);

        System.out.print("Entre com o Salario: ");
        double salario = scan.nextDouble();

        if (salario >= 1903.99 && salario <= 2826.65) {
            System.out.println("o IR é de 7.5% e pode deduzir R$ 142,80 ");
        } else {
            if (salario >= 2826.66 && salario <= 3751.05) {
                System.out.println("o IR é de 15% e pode deduzir R$ 354,80");
            } else {
                if (salario > 3751.06 && salario <= 4664.68) {
                    System.out.println("o IR é de 22.5% e pode deduzir R$ 636,13");
                } else {
                    if (salario > 4664.68) {
                        System.out.println("o IR é de 27,5% e pode deduzir R$ 869,36");
                    } else {
                        if (salario < 1903.99) {
                            System.out.println("Isento de imposto"); 
                        }    
                    }
                }
            }
        }
    }
}

Pelo switch realmente não consegui, talvez nem dê, não sei.

public class SwitchCase { public static void main(String[] args) { int salario = 3600;

switch (salario) { case 1: (salario >= 2800 && salario <= 3751); System.out.println("o IR é de 7.5% e pode deduzir R$ 142") break; case 2: (salario >= 2800 && salario <= 3751); System.out.println("o IR é de 15% e pode deduzir R$ 350"); break; case 3: (salario >= 3751 && salario <= 4664); System.out.println("o IR é de 22.5% e pode deduzir R$ 636"); break; default: System.out.println("Isento"); } } } `

2 respostas
solução!

Oie Antonio, tudo bem contigo?

O uso do switch não é ideal nessa situação e só te daria mais trabalho, é mais fácil fazer da maneira que você fez mesmo!

O ponto é, o switch só aceita int, enum e String, dessa forma, se você tentar colocar um boolean, como você fez, ou double ele não vai funcionar. Por isso, o If else acaba sendo ideal nesse problema.

O que pode ser feito é dar uma melhorada no uso dos "ifs", para deixar mais simples e fácil de entender, segue seu código com a adaptação feita:

 if (salario >= 1903.99 && salario <= 2826.65) {
            System.out.println("o IR é de 7.5% e pode deduzir R$ 142,80 ");
} else if (salario >= 2826.66 && salario <= 3751.05){
            System.out.println("o IR é de 15% e pode deduzir R$ 354,80");
} else if (salario > 3751.06 && salario <= 4664.68){
            System.out.println("o IR é de 22.5% e pode deduzir R$ 636,13");
} else if (salario > 4664.68){
            System.out.println("o IR é de 27,5% e pode deduzir R$ 869,36");
} else if (salario < 1903.99){
            System.out.println("Isento de imposto"); 
}    

Espero ter ajudado!

Se tiver qualquer outra dúvida estarei por aqui :)

Obrigado Igor, você foi perfeito !