Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
10
respostas

Porque o cod abaixo está mostrando que a variável soma não está sendo inicializada ?

Porque o cod abaixo está mostrando que a variável soma não está sendo inicializada ?

public class ControleBonificacao {

private double soma;

public void registra (Gerente g) {
    double bonificacao = g.getBonificacao();
    this.soma += bonificacao;
}

}

o do professor é assim e funciona hauhauhauh!!!!!!

public class ControleBonificacao {

private double soma;

public void registra (Gerente g) {
    double bonificacao = g.getBonificacao();
    this.soma = this.soma + bonificacao;
}

}

10 respostas

Boa tarde Diego. Poderia postar o nome do erro que está dando? Pois talvez seja a inicialização da variável no main.

Esse é o erro que aparece "The value of the field ControleBonificacao. soma is not used".

Tenta trocar o tipo da referência Gerente por Funcionario para ver se dar certo.

Oi Diego, tudo certo?
Me chamo Guido, e sou um dos estudantes aqui da Alura.
Com a sua classe ControleBonificacao, não tem problema nenhum. O problema pode está na classe do programa, onde temos o método main.
Lá no método main, temos que instanciar um objeto da classe ControleBonificacao para poder chamar o método registra, que recebe uma referência do tipo Funcionario.
Quando damos new na classe ControleBonificacao, criamos um objeto dessa classe, e o atributo soma é iniciado automaticamente com o valor 0.0, pois sua variável é do tipo double, e esse é o valor padrão do tipo double para quando não definimos nenhum valor no construtor.
Lembrando que, a variável soma pertence ao objeto criado, que é o que chamamos de atributo, campo ou variável de instância.
Vc poderia postar o seu método main para a gente dar uma olhada?
Abraços e aguardo retorno.
Obrigado!

Luan Mello da Silva bom dia !!!

Então não deu certo, continua dando o mesmo erro :(

Guido José Warken Filho bom dia !!!

segue minha classe main, mais creio que o problema não está na classe Main.

public class TesteReferencias {

public static void main(String[] args) {
    Gerente g1 = new Gerente();

ControleBonificacao control = new ControleBonificacao(); control.registra(g1);

public class TesteReferencias { public static void main(String[] args) { Gerente g1 = new Gerente(); ControleBonificacao control = new ControleBonificacao(); control.registra(g1);

}

}

Ops foi mau ... agora acho que vai

public class TesteReferencias {

    public static void main(String[] args) {
        Gerente g1 = new Gerente();
        ControleBonificacao control = new ControleBonificacao();
        control.registra(g1);
    }
}
solução!

Boa tarde diego.barroso. Acho que sei o pq. Esse "erro" ele está amarelo e na lateral esquerda do código no eclipse? pq se estiver, é só um aviso dizendo que você inicializou a variável e/ou está manipulando o valor dela mas não a está usando para mostrar tela ou pegar seu valor. Faça assim, no ControleBonificacao logo abaixo do método registra, coloque esse código e chama ele no main do TestaReferencias dentro de um "sysout".

public double getSoma() {
    return soma;
}

Obrigado!