Bom dia ,
[code]public void calculaBonus() {
// nesta condição quando atribui tempo de serviço menor que 15 ele calcula e imprime normalmente o bonus e o salario final
if (tempoServico <= 15) {
double bonusMinimo = 7.5 / 100;
bonus = salario * bonusMinimo;
salarioFinal = salario + bonus;
//daqui para baixo ele nao atribui valores a variavel bonus consequentemente nao atribui valor que deveria a salarioFinal.
} else if (tempoServico >= 16 && tempoServico <= 48) {
double bonusMedio = 11 / 100;
bonus = salario * bonusMedio;
salarioFinal = salario + bonus;
} else {
double bonusMaximo = 15 / 100;
bonus = salario * bonusMaximo;
salarioFinal = salario + bonus;
}
}[/code]
Porque a variavel bonus nao esta atribuindo valor quando cai nos outros blocos … Ajuda plx
pra mim parece que sua sintaxe ta correta, se quiser mostrar a classe toda aí (menos gets e sets… a não ser que eles tenham sido alterados pra filtrar ou etc…) a gente consegue ter uma idéia melhor de onde pode estar o erro…
edit: coloque também a parte do código onde você chama esse método…
[quote=mausexdd]Bom dia ,
[code]public void calculaBonus() {
// nesta condição quando atribui tempo de serviço menor que 15 ele calcula e imprime normalmente o bonus e o salario final
if (tempoServico <= 15) {
double bonusMinimo = 7.5 / 100;
bonus = salario * bonusMinimo;
salarioFinal = salario + bonus;
//daqui para baixo ele nao atribui valores a variavel bonus consequentemente nao atribui valor que deveria a salarioFinal.
} else if (tempoServico >= 16 && tempoServico <= 48) {
double bonusMedio = 11 / 100;
bonus = salario * bonusMedio;
salarioFinal = salario + bonus;
} else {
double bonusMaximo = 15 / 100;
bonus = salario * bonusMaximo;
salarioFinal = salario + bonus;
}
}[/code]
Porque a variavel bonus nao esta atribuindo valor quando cai nos outros blocos … Ajuda plx[/quote]
Qual é o valor que está chegando para a variável tempoServico?
Poste o código completo pra podermos analisar melhor, por favor.
seguinte…
na sua divisão você ta dividindo 2 inteiros, então ele vai tentar retornar um inteiro, e não um float…
você tem que ‘forçar’ ele a entender que é um float. é bem simples, é só adicionar um ‘f’ ao lado do número, assim:
public void calculaBonus() {
if (this.tempoServico <= 15) {
double bonusMinimo = 7.5f / 100f;
this.bonus = this.salario * bonusMinimo;
this.salarioFinal = this.salario + this.bonus;
} else if (this.tempoServico >= 16 && this.tempoServico <= 48) {
double bonusMedio = 11f / 100f;
this.bonus = this.salario * bonusMedio;
this.salarioFinal = this.salario + this.bonus;
} else {
double bonusMaximo = 15f / 100f;
this.bonus = this.salario * bonusMaximo;
this.salarioFinal = this.salario + this.bonus;
}
}
aí roda direitinho…
caso esteja se perguntando por que o primeiro funcionava… é porque ele era um número decimal, ele ja era um float… por ele ter o ponto (7.5) você não precisa dizer mais que ele é float, então funciona.
abraço!
Boa digaoneves foi realmente isso. eu coloquei um 11".0" apos o numero int para forçar o metodo a me retornar
o valor abaixo de zero ex 0.87 vlw ai pela ajuda 
VLW pela ajuda de todo mundo encerrando o post 