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"

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!