importjava.util.Scanner;publicclassEx3Extra{publicstaticvoidmain(String[]args){intsal,imp,op;floatnSal;Stringclas;Scannerscn=newScanner(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){case1:if(sal<1008){nSal=scn.nextFloat();}elseif(sal>1008&&sal<2000){nSal=sal+430;System.out.println("Seu Salário será de: "+nSal);}elseif(sal>2000&&sal<7000){nSal=sal+500;System.out.println("Seu Salário será de: "+nSal);}elseif(sal>7000){nSal=sal+630;System.out.println("Seu Salário será de: "+nSal);}break;case2:if(sal<1904){System.out.println("Voce nao tem imposto");}elseif(sal>1904&&sal<2826){imp=(sal*75/100);System.out.println("O seu imposto: "+imp);}elseif(sal>2826&&sal<3751){imp=(sal*15/100);System.out.println("O seu imposto: "+imp);}elseif(sal>3751&&sal<4664){imp=sal*225/1000;System.out.println("O seu imposto: "+imp);}elseif(sal<4664){imp=sal*275/1000;System.out.println("O seu imposto: "+imp);}case3:if(nSal>4000){clas="Analista de programação Junior";System.out.println("Classificação: "+clas);}elseif(nSal>4000&&nSal<7500){clas="Analista de Programação Senior";System.out.println("Classificação: "+clas);}elseif(nSal>7500&&nSal<10000){clas="Analista de programação Senior";System.out.println("Classificação: "+clas);}elseif(nSal>10000){clas="Gerente";System.out.println("Classificação: "+clas);break;}case4: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.
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?
R
Rodolfo_Pimenta1
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?
K
KPS
Eu usaria um while, você teria o enunciado do exercício?
R
Rodolfo_Pimenta1
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
Calcular o novo salário
Calcular o imposto
Classificação
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
K
KPS
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),
importjava.util.Scanner;publicclassEx3Extra{publicstaticvoidmain(String[]args){intsal=0,imp=0,op;floatnSal=0;Stringclas;booleanfimPrograma=false;booleansalarioValido=false;Scannerscn=newScanner(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){case1:if(sal<1008){nSal=sal+240;System.out.println("Seu Salário será de: "+nSal);}elseif(sal>1008&&sal<2000){nSal=sal+430;System.out.println("Seu Salário será de: "+nSal);}elseif(sal>2000&&sal<7000){nSal=sal+500;System.out.println("Seu Salário será de: "+nSal);}elseif(sal>7000){nSal=sal+630;System.out.println("Seu Salário será de: "+nSal);}break;case2:if(sal<1904){System.out.println("Voce nao tem imposto");}elseif(sal>1904&&sal<2826){imp=(sal*75/100);System.out.println("O seu imposto: "+imp);}elseif(sal>2826&&sal<3751){imp=(sal*15/100);System.out.println("O seu imposto: "+imp);}elseif(sal>3751&&sal<4664){imp=sal*225/1000;System.out.println("O seu imposto: "+imp);}elseif(sal<4664){imp=sal*275/1000;System.out.println("O seu imposto: "+imp);}break;case3:if(nSal<=4000){clas="Analista de programação Junior";System.out.println("Classificação: "+clas);}elseif(nSal>4000&&nSal<7500){clas="Analista de Programação Senior";System.out.println("Classificação: "+clas);}elseif(nSal>7500&&nSal<10000){clas="Analista de programação Senior";System.out.println("Classificação: "+clas);}elseif(nSal>10000){clas="Gerente";System.out.println("Classificação: "+clas);}break;case4:System.out.println("Tchau !!");fimPrograma=true;}}}}
R
Rodolfo_Pimenta1
Vlw de vdd, ajudou muito, obrigado
S
staroski
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:
importjava.io.PrintStream;importjava.util.Scanner;publicclassExemplo{publicstaticvoidmain(String[]args){Exemploprograma=newExemplo();programa.executar();}privatestaticfinalScannerentrada=newScanner(System.in);privatestaticfinalPrintStreamsaida=System.out;privatestaticfinalintOPCAO_CALCULAR_NOVO_SALARIO=1;privatestaticfinalintOPCAO_CALCULAR_IMPOSTO=2;privatestaticfinalintOPCAO_MOSTRAR_CLASSIFICACAO=3;privatestaticfinalintOPCAO_SAIR=4;publicvoidexecutar(){doublesalarioAtual=lerSalario();doublesalarioNovo=salarioAtual;while(true){switch(lerOpcao()){caseOPCAO_CALCULAR_NOVO_SALARIO:salarioNovo=calcularNovoSalario(salarioAtual);break;caseOPCAO_CALCULAR_IMPOSTO:calcularImposto(salarioNovo);break;caseOPCAO_MOSTRAR_CLASSIFICACAO:mostrarClassificacao(salarioNovo);break;caseOPCAO_SAIR:sair();break;}}}privatevoidcalcularImposto(doublesalario){if(salario<=1903.98){saida.println("Voce nao tem imposto");return;}doubleimposto=0;if(salario>=1903.99&&salario<=2826.65){imposto=salario*0.075;}elseif(salario>=2826.66&&salario<=3751.05){imposto=salario*0.15;}elseif(salario>=3751.06&&salario<=4664.68){imposto=salario*0.225;}elseif(salario>4664.68){imposto=salario*0.275;}saida.println("O seu imposto: "+imposto);}privatedoublecalcularNovoSalario(doublesalarioAtual){doublesalarioNovo=0;if(salarioAtual<1008){salarioNovo=salarioAtual+240;}elseif(salarioAtual>1008&&salarioAtual<2000){salarioNovo=salarioAtual+430;}elseif(salarioAtual>2000&&salarioAtual<7000){salarioNovo=salarioAtual+500;}elseif(salarioAtual>7000){salarioNovo=salarioAtual+630;}saida.println("Seu Salário será de: "+salarioNovo);returnsalarioNovo;}privateintlerOpcao(){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: ");intopcao=Integer.parseInt(entrada.nextLine());switch(opcao){caseOPCAO_CALCULAR_NOVO_SALARIO:caseOPCAO_CALCULAR_IMPOSTO:caseOPCAO_MOSTRAR_CLASSIFICACAO:caseOPCAO_SAIR:returnopcao;default:saida.println("Opcao inválida: "+opcao);break;}}}privatedoublelerSalario(){while(true){saida.print("Escreva o seu salário: ");doublesalario=Double.parseDouble(entrada.nextLine());if(salario<998){saida.println("Seu salario esta abaixo do Salario minimo, por favor insira um salario valido!");}else{returnsalario;}}}privatevoidmostrarClassificacao(doublesalarioNovo){Stringclassificacao="";if(salarioNovo<=4000){classificacao="Analista de programação Junior";}elseif(salarioNovo>4000&&salarioNovo<7500){classificacao="Analista de Programação Senior";}elseif(salarioNovo>7500&&salarioNovo<10000){classificacao="Analista de programação Senior";}elseif(salarioNovo>10000){classificacao="Gerente";}saida.println("Classificação: "+classificacao);}privatevoidsair(){saida.println("Tchau !!");System.exit(0);}}