Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erros no calculo do salário

Bom dia. Não estou conseguindo encontrar o erro, poderia me ajudar por favor. A seta informa o erro no multiplicador e no parênteses do this.calculaGanhoAnual()

funcionario.java:13: error: incompatible types: unexpected return value return this.registro.salario * 12; ^ funcionario.java:22: error: 'void' type not allowed here System.out.println("Ganho anual: R$" + this.calculaGanhoAnual()); ^ 2 errors

class Funcionario { 
    String nome;
    String rg;
    String dataNascimento; 
    Empresa registro;
    Data dataDeEntrada;

    void recebeAumento(double valorDoAumento){
        this.registro.salario += valorDoAumento;
    }

    void calculaGanhoAnual(){
        return this.registro.salario * 12;
    }

    void mostra() {
        System.out.println("Nome: " + this.nome);
        System.out.println("Departamento: " + this.registro.departamento);
        System.out.println("Salário: R$" + this.registro.salario);
        System.out.println("Data de entrada: " + this.registro.dataEntrada);
        System.out.println("RG: " + this.rg);
        System.out.println("Ganho anual: R$" + this.calculaGanhoAnual());
    }
}

class Empresa {
    String departamento;
    String funcao;
    Data dataEntrada;
    double salario;
}

class ConsultaFuncionario {

    public static void main(String[] args) {

        Funcionario Pessoal = new Funcionario();
        Pessoal.nome = "João da Silva";
        Pessoal.dataNascimento = "12/05/1987";

        Pessoal.registro = new Empresa();
        Pessoal.registro.departamento = "Cobrança";
        Pessoal.registro.funcao = "Analise de crédito";
        Pessoal.registro.salario = 1200.0;

        Pessoal.recebeAumento(500.00);
        Pessoal.calculaGanhoAnual();
    }
}

class Data {
    int dia;
    int mes;
    int ano;

    void preencheData (int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }

    String getFormatada() {
        return this.dia + "/" + this.mes + "/" + this.ano;
    }
}


class TestaFuncionario {
    public static void main(String[] args) {
        Funcionario f1 = new Funcionario();
        f1.nome = "Hugo";
        f1.registro.salario = 100;
        f1.recebeAumento(50);

        // adicionando a data como tipo
        f1.dataDeEntrada = new Data();
        f1.dataDeEntrada.preencheData(1, 7, 2009);

        f1.mostra();
    }
}
3 respostas
solução!

O problema é que o método calculaGanhoAnual está com a assinatura do método com retorno de dados do tipo 'void', sendo que dentro do método existe um 'return' com o resultado de uma multiplicação.

O método calculaGanhoAnual está assim:

void calculaGanhoAnual(){
        return this.registro.salario * 12;
    }

mas deveria estar assim:

double calculaGanhoAnual(){
        return this.registro.salario * 12;
    }

O void só usamos quando não se precisa retornar nada, o restante sempre vai retornar um tipo, seja String, int, Object e por ai vai.

Ok muito obrigado