o programa tem que ler funcionários até o seja digitado um salário ZERO
packagesintaxe;importjava.util.Scanner;publicclassAumentoSalario{/** * @param args */publicstaticvoidmain(String[]args){// TODO Auto-generated method stubScannerteclado=newScanner(System.in);System.out.println("Digite o cargo do funcionário");Stringcargo=teclado.next();System.out.println("Digite o salário do funcionário");doublesalario=teclado.nextInt();doublesalarioNovo=0;doublediferenca;doublepercentual1=10;doublepercentual2=20;doublepercentual3=30;doublepercentual4=40;while(salario!=0){if(cargo.equals("Gerente")){salarioNovo=salario+(salario*(percentual1/100));}elseif(cargo.equals("Engenheiro")){salarioNovo=salario+(salario*(percentual2/100));}elseif(cargo.equals("Técnico")){salarioNovo=salario+(salario*(percentual3/100));}elsesalarioNovo=salario+(salario*(percentual4/100));System.out.println("Salário antigo é: "+salario);System.out.println("Novo salário é: "+salarioNovo);System.out.println("A diferença é: "+(salarioNovo-salario));}}}
pode ser simples o erro, mas não consigo consertar, se alguém puder me ajudar, agradeço.
Amigo, seu problema é no While. Veja que você manda ele executar essa função, enquanto o Salario for diferente de 0. Se eu digitar 1, ele sempre será diferente de 0, entendeu? Acho que você tem que utilizar outra abordagem.
fabiocortolan
Vc deve pegar o salário dentro do laço while e não fora dele, segue abaixo o método corrigido.
Obs.: neste caso a melhor abordagem é o laço “do while” e não “while”, outra coisa, procure identar o código corretamente, vai te ajudar muito para dar manutenção.
Flw…
publicstaticvoidmain(String[]args){// Variáveis utilizadas no sistemaScannerteclado=newScanner(System.in);;Stringcargo="";doublesalario=0;doublesalarioNovo=0;doublediferenca=0;doublepercentual1=10;doublepercentual2=20;doublepercentual3=30;doublepercentual4=40;// Altere o while para "do while", dessa forma o código abaixo será executado antes da// verificação "salario != 0"do{// Faça a solicitação dos dados dentro do laço, caso contrário como vc digitará// o próximo salário para comparação?System.out.println("Digite o cargo do funcionário");cargo=teclado.next();System.out.println("Digite o salário do funcionário");salario=teclado.nextDouble();if(cargo.equals("Gerente")){salarioNovo=salario+(salario*(percentual1/100));}elseif(cargo.equals("Engenheiro")){salarioNovo=salario+(salario*(percentual2/100));}elseif(cargo.equals("Técnico")){salarioNovo=salario+(salario*(percentual3/100));}elsesalarioNovo=salario+(salario*(percentual4/100));System.out.println("Salário antigo é: "+salario);System.out.println("Novo salário é: "+salarioNovo);System.out.println("A diferença é: "+(salarioNovo-salario));}while(salario!=0);// comparação do laço para verificar se será executado novamente ou não}
S
snynder
fabiocortolan:
Vc deve pegar o salário dentro do laço while e não fora dele, segue abaixo o método corrigido.
Obs.: neste caso a melhor abordagem é o laço "do while" e não "while", outra coisa, procure identar o código corretamente, vai te ajudar muito para dar manutenção.
Flw...
publicstaticvoidmain(String[]args){// Variáveis utilizadas no sistemaScannerteclado=newScanner(System.in);;Stringcargo="";doublesalario=0;doublesalarioNovo=0;doublediferenca=0;doublepercentual1=10;doublepercentual2=20;doublepercentual3=30;doublepercentual4=40;// Altere o while para "do while", dessa forma o código abaixo será executado antes da// verificação "salario != 0"do{// Faça a solicitação dos dados dentro do laço, caso contrário como vc digitará// o próximo salário para comparação?System.out.println("Digite o cargo do funcionário");cargo=teclado.next();System.out.println("Digite o salário do funcionário");salario=teclado.nextDouble();if(cargo.equals("Gerente")){salarioNovo=salario+(salario*(percentual1/100));}elseif(cargo.equals("Engenheiro")){salarioNovo=salario+(salario*(percentual2/100));}elseif(cargo.equals("Técnico")){salarioNovo=salario+(salario*(percentual3/100));}elsesalarioNovo=salario+(salario*(percentual4/100));System.out.println("Salário antigo é: "+salario);System.out.println("Novo salário é: "+salarioNovo);System.out.println("A diferença é: "+(salarioNovo-salario));}while(salario!=0);// comparação do laço para verificar se será executado novamente ou não}
já tinha colocado pra fazer a solicitação dentro do laço, mas utilizava while e não o " do " então acontecia o mesmo problema.