1
resposta

Meu código não funciona.

Boa noite amigos, estava acompanhando a aula 2 de Java II e durante o código que o professor estava ensinando fui reescrevendo o que ele estava programando em minha maquina para deixar documentado, porém meu código apesar de ter compilado não tomou as mesmas ações que o código do instrutor, enquanto o dele aparecia 200.0, 400.0, 600.0. No meu aparecia apenas 0.0, 0,0 0,0. Imaginei ser um erro de transcrição minha e vi novamente o vídeo prestando mais atenção mas mesmo assim não achei meu erro, alguém pode me salvar?

Segue meu código:

class Funcionario {
    public String nome;
    public double salario;


    public void setSalario(double Salario) {
        this.salario = salario;
    }

    public double getBonus() {
        return this.salario * 0.2;
    }

}
  class TotalizadorDeBonus {
    private double total = 0;

    public void adiciona(Funcionario f) {
        total += f.getBonus();
    }

    public double getTotal() {
        return this.total;
    }

 }


 class Gerente extends Funcionario {


    public double getBonus() {
        return this.salario * 0.3;

}
}

class Desenvolvedor extends Funcionario {
    public double getBonus() {
        return this.salario * 0.25;
}
}


class TestaFuncionario {
    public static void main(String[] args) {
        Funcionario joao = new Funcionario();
        joao.setSalario(1000.0);
        System.out.println(joao.nome);
        System.out.println(joao.getBonus());

        Gerente joaquim = new Gerente();
        joaquim.setSalario(2000.0);

        System.out.println(joaquim.getBonus());

         TotalizadorDeBonus totalizador = new TotalizadorDeBonus();
        totalizador.adiciona(joao);
        totalizador.adiciona(joaquim);

        System.out.println(totalizador.getTotal()); 



    }
}
1 resposta

Oi Bruno!

Na classe Funcionario, no método setSalario() o parâmetro salario está com um "S", em maiúsculo:

public void setSalario(double Salario) {
        this.salario = salario;
}

Isso faz com que o valor passado não seja atribuído para o atributo salario da classe, já que a atribuição está sendo feita com o "s" em minúsculo.

Alterar o nome do parâmetro vai resolver. :)

public void setSalario(double salario) {
    this.salario = salario;
}

Abraço!