o programa tem que ler funcionários até o seja digitado um salário ZERO
[code] package sintaxe;
import java.util.Scanner;
public class AumentoSalario {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner teclado = new Scanner(System.in);
System.out.println("Digite o cargo do funcionário");
String cargo = teclado.next();
System.out.println("Digite o salário do funcionário");
double salario = teclado.nextInt();
double salarioNovo = 0;
double diferenca;
double percentual1 = 10;
double percentual2 = 20;
double percentual3 = 30;
double percentual4 = 40;
while ( salario != 0){
if(cargo.equals("Gerente")){
salarioNovo = salario+ (salario * (percentual1 / 100));
} else if (cargo.equals("Engenheiro")) {
salarioNovo = salario+ (salario * (percentual2 / 100));
} else if (cargo.equals("Técnico")) {
salarioNovo = salario+ (salario * (percentual3 / 100));
} else salarioNovo = 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));
}
}
}
[/code]
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.
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…
public static void main(String[] args) {
// Variáveis utilizadas no sistema
Scanner teclado = new Scanner(System.in);;
String cargo = "";
double salario = 0;
double salarioNovo = 0;
double diferenca = 0;
double percentual1 = 10;
double percentual2 = 20;
double percentual3 = 30;
double percentual4 = 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));
} else if (cargo.equals("Engenheiro")) {
salarioNovo = salario+ (salario * (percentual2 / 100));
} else if (cargo.equals("Técnico")) {
salarioNovo = salario+ (salario * (percentual3 / 100));
} else salarioNovo = 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
}
[quote=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…
[code]
public static void main(String[] args) {
// Variáveis utilizadas no sistema
Scanner teclado = new Scanner(System.in);;
String cargo = “”;
double salario = 0;
double salarioNovo = 0;
double diferenca = 0;
double percentual1 = 10;
double percentual2 = 20;
double percentual3 = 30;
double percentual4 = 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));
} else if (cargo.equals("Engenheiro")) {
salarioNovo = salario+ (salario * (percentual2 / 100));
} else if (cargo.equals("Técnico")) {
salarioNovo = salario+ (salario * (percentual3 / 100));
} else salarioNovo = 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
}
[/code][/quote] 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.