Exercicio java Case, if

import java.util.Scanner;

public class Ex3Extra {
	public static void main(String[] args) {
		int sal, imp, op;
		float nSal;
		String clas;
	
		
		Scanner scn = new Scanner (System.in);
		
		System.out.println("Escreva o seu salário: ");
		sal = scn.nextInt();
		if (sal < 998) {
			System.out.println("Seu salario esta abaixo do Salario minimo, por favor insira um salario valido!");
			} 
				System.out.println("Opção 1 Calcular o novo salario");
				System.out.println("Opção 2 Calcular o imposto");
				System.out.println("Opção 3 Mostra a classificação");
				System.out.println("Opção 4 Sair");
				System.out.println("Escolha qual opção voce deseja: ");
				op = scn.nextInt();
				
		switch (op) {
		case 1:
			if (sal < 1008) {
				nSal = scn.nextFloat();
			}else
			if (sal > 1008 && sal < 2000){
				nSal = sal + 430;
				System.out.println("Seu Salário será de: " + nSal);
			}else
			if (sal > 2000 && sal < 7000) {
				nSal = sal + 500;
				System.out.println("Seu Salário será de: " + nSal);
			}else
			if (sal > 7000) {
				nSal = sal + 630;
				System.out.println("Seu Salário será de: " + nSal);	
			}
				break;
			
		case 2:
			if (sal < 1904) {
				System.out.println("Voce nao tem imposto");
			}else
			if ( sal > 1904 && sal < 2826) {
				imp = (sal*75/100);
				System.out.println("O seu imposto: "+ imp);
			}else
			if (sal > 2826 && sal < 3751) {
				imp = (sal*15/100);
				System.out.println("O seu imposto: "+ imp);
			}else
			if (sal > 3751 && sal < 4664) {
				imp = sal*225/1000;
				System.out.println("O seu imposto: "+ imp);
			}else
			if (sal < 4664) {
				imp = sal*275/1000;
				System.out.println("O seu imposto: "+ imp);
			}
		case 3 : 
			if (nSal > 4000) {
				clas = "Analista de programação Junior";
				System.out.println("Classificação: " + clas);
			}else
			if (nSal > 4000 && nSal < 7500) {
				clas = "Analista de Programação Senior";
				System.out.println("Classificação: " + clas);
			}else
			if (nSal > 7500 && nSal < 10000) {
				clas = "Analista de programação Senior";
				System.out.println("Classificação: " + clas);
			}else
			if (nSal > 10000) {
				clas = "Gerente";
				System.out.println("Classificação: " + clas);
				break;
			}
		case 4:
			System.out.println("Tchau !!");
			}
		}
		
		
	}

Galera por que o nSal do case 3 não recebe o nSal do case 1? Desculpa ainda sou iniciante no Java e não to achando erro.

Boa Noite

Pelo que entendi do seu programa ele roda uma unica vez, se você entrar com a opção numero 1 ele apenas vai executar a opção numero 1 e depois vai parar a execução e assim as os valores das variáveis irão “resetar” quando clicar para rodar o programa novamente, por isso que quando você rodar o programa novamente e entrar com a opção 2 o valor nSal não terá o valor que você fez quando entrou no case 1.

Oque basicamente você quer fazer nesse exercício?

O Usuário escolhe a opção
Na opção 1: Calcular e mostrar o novo salário usando as regras
Na opção 2: Calcular e mostrar o imposto usando as regras
Na opção 3: Mostrar na tela a classificação de acordo com o novo salário conforme tabela

Entendi oq vc quis dizer, como posso fazer pros valores não “resetarem”, terei que colocar o calculo do nSal dnv no case 3 ? O Código ficaria mto cheio nao?

Eu usaria um while, você teria o enunciado do exercício?

Obrigatório usar estrutura “switch case”
Faça um algoritmo que receba do usuário o salário de um funcionário:

  • Valide a inexistência de salário menor que o salário mínimo (R$ 998,00).
    Após validação apresente o menu a seguir:
    Menu de opções
  1. Calcular o novo salário
  2. Calcular o imposto
  3. Classificação
  4. Sair
    Digite a opção desejada:
    Disciplina: Computational Thinking
    Professora: Fernanda Pereira Caetano
    O algoritmo deve permitir que o usuário escolha a opção desejada.
  • Verifique a opção de opção inválida
    Na opção 1: Calcular e mostrar o novo salário usando as regras a seguir:
    Salário Aumento
    Menor que R$ 1.008,00 R$240.00
    De R$ 1.008,00 a R$ 2.000.00 R$430.00
    De R$ 2.000,01 a R$ 7.000.00 R$500.00
    Acima de R$ 7.000,00 R$630.00
    Na opção 2: Calcular e mostrar o imposto usando as regras a seguir:
    Salário % de desconto
    Até R$ 1.903,98 -
    De R$ 1.903,99 até R$ 2.826,65 7,5%
    De R$ 2.826,66 até 3.751,05 15%
    De R$ 3.751,06 até 4.664,68 22,5%
    Acima 4.664,68 27,5%
    Na opção 3: Mostrar na tela a classificação de acordo com o novo salário conforme tabela a
    seguir:
    Salário Classificação
    Até R$ 4.000,00 Analista de Programação Júnior
    De R$ 4.000,01 até 7.500,99 Analista de Programação Pleno
    De R$ 7.501,00 até R$ 10.000,00 Analista de Programação Senior
    Acima de R$ 10.000,00 Gerente

Eu faria assim:

De acordo com o enunciado que você passou, eu usaria um while para validar a entrada do salario, só iria sair do while se fosse um salario válido ou seja, que o salario informado fosse maior ou igual que 998.

Depois usaria outro while para fazer o menu ficar aparecendo para você escolher uma opção até que a opção 4 seja selecionada.

Algumas Observações
1º- O salario deveria ser uma variável do tipo float e não int pois existe salários com valores quebrados. Ex: R$ 750,99.
2º- De acordo com o enunciado acho que o valor do imposto deveria ser de acordo com o novo salario(nSal) e não com o antigo(sal),

import java.util.Scanner;

public class Ex3Extra {
	public static void main(String[] args) {
		int sal = 0, imp = 0, op;
		float nSal = 0;
		String clas;
		boolean fimPrograma = false;
		boolean salarioValido = false;
		Scanner scn = new Scanner(System.in);
		while (!salarioValido) {

			System.out.println("Escreva o seu salário: ");
			sal = scn.nextInt();
			if (sal < 998) {
				System.out.println("Seu salario esta abaixo do Salario minimo, por favor insira um salario valido!");

			} else {
				salarioValido = true;
			}
		}
		while (!fimPrograma) {
			System.out.println("Opção 1 Calcular o novo salario");
			System.out.println("Opção 2 Calcular o imposto");
			System.out.println("Opção 3 Mostra a classificação");
			System.out.println("Opção 4 Sair");
			System.out.println("Escolha qual opção voce deseja: ");
			op = scn.nextInt();

			switch (op) {
			case 1:
				if (sal < 1008) {
					nSal = sal + 240;
					System.out.println("Seu Salário será de: " + nSal);
				} else if (sal > 1008 && sal < 2000) {
					nSal = sal + 430;
					System.out.println("Seu Salário será de: " + nSal);
				} else if (sal > 2000 && sal < 7000) {
					nSal = sal + 500;
					System.out.println("Seu Salário será de: " + nSal);
				} else if (sal > 7000) {
					nSal = sal + 630;
					System.out.println("Seu Salário será de: " + nSal);
				}
				break;

			case 2:
				if (sal < 1904) {
					System.out.println("Voce nao tem imposto");
				} else if (sal > 1904 && sal < 2826) {
					imp = (sal * 75 / 100);
					System.out.println("O seu imposto: " + imp);
				} else if (sal > 2826 && sal < 3751) {
					imp = (sal * 15 / 100);
					System.out.println("O seu imposto: " + imp);
				} else if (sal > 3751 && sal < 4664) {
					imp = sal * 225 / 1000;
					System.out.println("O seu imposto: " + imp);
				} else if (sal < 4664) {
					imp = sal * 275 / 1000;
					System.out.println("O seu imposto: " + imp);
				}
				break;
			case 3:
				if (nSal <= 4000) {
					clas = "Analista de programação Junior";
					System.out.println("Classificação: " + clas);
				} else if (nSal > 4000 && nSal < 7500) {
					clas = "Analista de Programação Senior";
					System.out.println("Classificação: " + clas);
				} else if (nSal > 7500 && nSal < 10000) {
					clas = "Analista de programação Senior";
					System.out.println("Classificação: " + clas);
				} else if (nSal > 10000) {
					clas = "Gerente";
					System.out.println("Classificação: " + clas);
				}
				break;
			case 4:
				System.out.println("Tchau !!");
				fimPrograma = true;
			}
		}

	}
}

Vlw de vdd, ajudou muito, obrigado

Dica:
Evite implementar tudo no método main.
Na real, evite fazer métodos com mais de 20 linhas.
Procure quebrar seu problema em partes menores, independentes.

Veja:

import java.io.PrintStream;
import java.util.Scanner;

public class Exemplo {

    public static void main(String[] args) {
        Exemplo programa = new Exemplo();
        programa.executar();
    }

    private static final Scanner entrada = new Scanner(System.in);
    private static final PrintStream saida = System.out;

    private static final int OPCAO_CALCULAR_NOVO_SALARIO = 1;
    private static final int OPCAO_CALCULAR_IMPOSTO = 2;
    private static final int OPCAO_MOSTRAR_CLASSIFICACAO = 3;
    private static final int OPCAO_SAIR = 4;

    public void executar() {
        double salarioAtual = lerSalario();
        double salarioNovo = salarioAtual;
        while (true) {
            switch (lerOpcao()) {
                case OPCAO_CALCULAR_NOVO_SALARIO:
                    salarioNovo = calcularNovoSalario(salarioAtual);
                    break;
                case OPCAO_CALCULAR_IMPOSTO:
                    calcularImposto(salarioNovo);
                    break;
                case OPCAO_MOSTRAR_CLASSIFICACAO:
                    mostrarClassificacao(salarioNovo);
                    break;
                case OPCAO_SAIR:
                    sair();
                    break;
            }
        }
    }

    private void calcularImposto(double salario) {
        if (salario <= 1903.98) {
            saida.println("Voce nao tem imposto");
            return;
        }
        double imposto = 0;
        if (salario >= 1903.99 && salario <= 2826.65) {
            imposto = salario * 0.075;
        } else if (salario >= 2826.66 && salario <= 3751.05) {
            imposto = salario * 0.15;
        } else if (salario >= 3751.06 && salario <= 4664.68) {
            imposto = salario * 0.225;
        } else if (salario > 4664.68) {
            imposto = salario * 0.275;
        }
        saida.println("O seu imposto: " + imposto);
    }

    private double calcularNovoSalario(double salarioAtual) {
        double salarioNovo = 0;
        if (salarioAtual < 1008) {
            salarioNovo = salarioAtual + 240;
        } else if (salarioAtual > 1008 && salarioAtual < 2000) {
            salarioNovo = salarioAtual + 430;
        } else if (salarioAtual > 2000 && salarioAtual < 7000) {
            salarioNovo = salarioAtual + 500;
        } else if (salarioAtual > 7000) {
            salarioNovo = salarioAtual + 630;
        }
        saida.println("Seu Salário será de: " + salarioNovo);
        return salarioNovo;
    }

    private int lerOpcao() {
        while (true) {
            saida.println("Opção " + OPCAO_CALCULAR_NOVO_SALARIO + " Calcular o novo salario");
            saida.println("Opção " + OPCAO_CALCULAR_IMPOSTO + " Calcular o imposto");
            saida.println("Opção " + OPCAO_MOSTRAR_CLASSIFICACAO + " Mostra a classificação");
            saida.println("Opção " + OPCAO_SAIR + " Sair");
            saida.print("Escolha qual opção voce deseja: ");
            int opcao = Integer.parseInt(entrada.nextLine());
            switch (opcao) {
                case OPCAO_CALCULAR_NOVO_SALARIO:
                case OPCAO_CALCULAR_IMPOSTO:
                case OPCAO_MOSTRAR_CLASSIFICACAO:
                case OPCAO_SAIR:
                    return opcao;
                default:
                    saida.println("Opcao inválida: " + opcao);
                    break;
            }
        }
    }

    private double lerSalario() {
        while (true) {
            saida.print("Escreva o seu salário: ");
            double salario = Double.parseDouble(entrada.nextLine());
            if (salario < 998) {
                saida.println("Seu salario esta abaixo do Salario minimo, por favor insira um salario valido!");
            } else {
                return salario;
            }
        }
    }

    private void mostrarClassificacao(double salarioNovo) {
        String classificacao = "";
        if (salarioNovo <= 4000) {
            classificacao = "Analista de programação Junior";
        } else if (salarioNovo > 4000 && salarioNovo < 7500) {
            classificacao = "Analista de Programação Senior";
        } else if (salarioNovo > 7500 && salarioNovo < 10000) {
            classificacao = "Analista de programação Senior";
        } else if (salarioNovo > 10000) {
            classificacao = "Gerente";
        }
        saida.println("Classificação: " + classificacao);
    }

    private void sair() {
        saida.println("Tchau !!");
        System.exit(0);
    }
}