[RESOLVIDO] Bloco if - else - Nao Atribui Informação

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 :smiley:

VLW pela ajuda de todo mundo encerrando o post :smiley: