[Resolvido] getSalario

Olá! Amigos, sou totalmente iniciante na linguagem, decidi junto com os cursos praticar com alguns exercícios simples, mas já no primeiro estou com dificuldades.

Gostaria de saber como fazer o método getSalario trazer o "resultado"de setSalario.

public class SalarioLiquido {

private String funcionario;
private String cpf;
private double salarioHora;
private double trabalhadas;
private double salario;

public void setFuncionario(String funcionario) {
	this.funcionario = funcionario;
}
public void setCpf(String cpf) {
	this.cpf = cpf;
}
public void setSalarioHora(double salarioHora) {
	this.salarioHora = salarioHora;
}
public void setTrabalhadas(double trabalhadas) {
	this.trabalhadas = trabalhadas;
}
private double setSalario() {
	return this.salario = this.trabalhadas *= this.salarioHora;
}
public double getSalario() {
	return this.salario;
}

}

Em meus testes o setSalario faz a conta certinha mas o getSalario sempre vem zerado.

O seu método setSalario deveria ser assim:

public void setSalario(double salario) {
	this.salario = salario + (getTrabalhadas() * getSalarioHora());
}

Utilizando os gets de horas trabalhadas e salário hora:

public double getTrabalhadas() {
	return this.trabalhadas;
}

public double getSalarioHora() {
	return this.salarioHora;
}

Para quando você chamar o getSalario, ele te retornar o valor correto e calculado!

1 curtida

O que é isso ?? *=

É utilizado para simplificar operações matemáticas!

Por exemplo:

double valor = 10;

valor += 5; //Resultado é 15 (é a mesma coisa que a linha abaixo)
valor = valor + 5; //Resultado é 15

No caso dele está usando a multiplicação que tem o mesmo efeito

double valor = 2;

valor *= 2; //Resultado é 4 (é a mesma coisa que a linha abaixo)
valor = valor * 2; //Resultado é 4
1 curtida

Obrigado pela resposta! Fiz a alteração sugerida e ainda assim tenho retorno 0 no getSalario.

public class SalarioLiquido {

private String funcionario;
private String cpf;
private double salarioHora;
private double trabalhadas;
private double salario;

public String getFuncionario() {
	return funcionario;
}
public void setFuncionario(String funcionario) {
	this.funcionario = funcionario;
}
public String getCpf() {
	return cpf;
}
public void setCpf(String cpf) {
	this.cpf = cpf;
}
public double getSalarioHora() {
	return this.salarioHora;
}
public void setSalarioHora(double salarioHora) {
	this.salarioHora = salarioHora;
}
public double getTrabalhadas() {
	return this.trabalhadas;
}
public void setTrabalhadas(double trabalhadas) {
	this.trabalhadas = trabalhadas;
}
public void setSalario(double salario) {
	this.salario = salario + (getTrabalhadas() * getSalarioHora());
}
public double getSalario() {
	return this.salario;
   }		
}

Testei da seguinte forma

public class TesteSalarioLiquido {

public static void main(String[] args) {
	
	SalarioLiquido pedro = new SalarioLiquido();
	pedro.setCpf("11111111111");
	pedro.setFuncionario("Pedro");
	pedro.setSalarioHora(30);
	pedro.setTrabalhadas(160);
	
	System.out.println(pedro.getSalario());
	
}

}

Sim, dessa forma ele vai trazer o valor zerado mesmo!

O que você quer é atribuir (valor hora x quantidade horas) á um salário base ?
Exemplo:
Base: 100,00
Valor Hora: 10,00
Quantidade de Horas: 10
Resultado: 200,00

Ou o que você você quer é gerar um salário a partir de (valor hora x quantidade horas) ?
Exemplo:
Valor Hora: 10,00
Quantidade de Horas: 10
Resultado: 100,00

Pois o exemplo que passei como alteração, atende a primeira situação e não a segunda, aí depende da forma que você quer calcular a implementação fica diferente.

1 curtida

Entendi, então é esse o problema.

Estou trabalhando na segunda opção, quero gerar um salário a partir das horas trabalhadas * valor hora.

Já tentei algumas coisas mas não funcionou. Como seria então?

O método getSalario ficaria da seguinte forma:

public double getSalario() {
    return getTrabalhadas() * getSalarioHora();
}

E o método setSalario, você pode remover, pois nesse contexto não será utilizável.

1 curtida

Maravilha!

Agora funcionou! Obrigado @Jonathan_Medeiros