Alguém para me ajudar nesse código! Por favor já fiz todo teste é não dar o que eu quero. Não estou conseguindo obter sucesso na hora de rodar o valor com aumento só fica “0.0”
package orientacaoObjeto;
public class Funcionario {
String nome;
String departamento;
String dataEntrada;
String RG;
double salario;
double aumentoSalario;
double calculaGanhoAnual;
double aumento;
double ganhoAnual;
boolean naEmpresa;
public int aumentaSalario;
public String dataEntrada() {
return dataEntrada;
}
public void dataEntrada(String dataEntrada) {
this.dataEntrada = dataEntrada;
}
public String departamento() {
return departamento;
}
public void departamento(String departamento) {
this.departamento = departamento;
}
public String nome() {
return nome;
}
public void nome(String nome) {
this.nome = nome;
}
public String RG() {
return RG;
}
public void RG(String rg) {
RG = rg;
}
public double salario() {
return salario;
}
public void salario(double salario) {
this.salario = salario;
}
public void aumentaSalario(double novoSalario){
this.salario = novoSalario;
}
public void recebeAumento(double aumento){
this.salario+=aumento;
}
public double calculaGanhoAnaul(){
double ganhoAnual = this.salario*12;
return ganhoAnual;
}
}
package orientacaoObjeto;
public class TesteFuncionario {
public static void main(String[] args) {
Funcionario funcionario = new Funcionario();
funcionario.salario(3300);
System.out.println("Salario: " + funcionario.salario());
double ganhoAnual = funcionario.calculaGanhoAnaul();
System.out.println(ganhoAnual);
funcionario.aumentaSalario(1000);
System.out.println(funcionario.calculaGanhoAnual);
}
}
Seu método:
public double calculaGanhoAnaul(){
double ganhoAnual = this.salario*12;
return ganhoAnual;
}
Deveria ser:
public double calculaGanhoAnaul(Double salario){
double ganhoAnual = salario*12;
return ganhoAnual;
}
2 curtidas
Seu problema é simples.
Você criou vários campos na sua classe sendo que um deles é calculaGanhoAnual
.
Você criou vários métodos para definir o valor destes vários campos.
public void dataEntrada(String dataEntrada) {
this.dataEntrada = dataEntrada;
}
public void departamento(String departamento) {
this.departamento = departamento;
}
public void nome(String nome) {
this.nome = nome;
}
public void RG(String rg) {
RG = rg;
}
public void salario(double salario) {
this.salario = salario;
}
Mas não tem nenhum método que define o valor do campo calculaGanhoAnual
. Ou seja, quando funcionário é construido, todos seus campos são inicializados com valores padrão. O valor padrão de tipos double é 0.0 (veja mais aqui). Por isso você recebe este resultado quando executa esta linha:
System.out.println(funcionario.calculaGanhoAnual);
Acho que o que você realmente queria fazer aqui era:
System.out.println( funcionario.calculaGanhoAnaul() ); // o nome deste método tá errado, né?
Outra coisa, você não perguntou, mas… É claro que o método aumentaSalario
deveria aumentar o salário atual, mas na verdade o que ele faz é substituir o valor antigo por um novo. O que não ficou claro pra mim (julgando pelo nome) é o método recebeAumento
, mas parece que ele tá fazendo exatamente o que aumentaSalario
deveria fazer. Desculpe se minha observação estiver errada ^^
Última coisa. Gostei do convenção de nomes que usou. salario
sem argumento retorna o salário e com argumento define o valor do this.salario
. E eu não fazia idéia de que eu podia ter variáveis e métodos com o mesmo nome na mesma classe. Vlw!