2
respostas

returnSalario

Oi pessoal tudo bem entao....

public class FuncionarioTeste {

private String nome;
private String CPF;
private double salario;
private int tipo = 0; //0-comum 1-Gerente 2-Diretor

public FuncionarioTeste() {

}

public double getBonificacao() { //Comum

    if(this.tipo == 0) {
        return this.salario * 0.1;
    }else if(this.tipo == 1) {

        return this.salario * 0.5;

    }else if(this.tipo == 2) {
        return this.salario * 0.75;
    }else if(this.tipo ==3) {

        return this.salario+1000.00;
    }
    return this.salario;
}

no exercicio que o professor mostra não tem a parte da u,tima linha return this.salario mais se eu retiro essa linha aparece uma notificacação falando que o metodo tem que voltar como double sabem dizer algo sobre isso ?

2 respostas

Matheus,

Não fiz esse curso mas no código abaixo, a assinatura do método exige um retorno de um double.

Para que o código funcione sem retornar double é necessário substituir double por void na assinatura mas acho que não faz muito sentido.

Espero ter ajudado. Abs!

public double getBonificacao();
public void getBonificacao();

Matheus, no java tudo é muito especifico, quando você declara um metodo, logo após o public você define o tipo do retorno:

public double getBonificacao() {
//SEU CODIGO
}

Este double se refere ao tipo de dado que ele vai retornar, ou seja, após executar o metodo getBonificacao, ele exige um valor para que ele possa devolver ou como diz na linguagem "retornar".

No caso você fez condicionais checando pelo parametro tipo

private int tipo = 0; //0-comum 1-Gerente 2-Diretor

Se for do tipo 0, RETORNA o salário * 0.01 (10%), se for do tipo 1 RETORNA o salário * 0.5 (meio salario) e dai por diante, ou seja, seu metodo retorna algo.

Um metodo setter por exemplo para mudar o tipo do funcionario, não haveria a necessidade de ter um retorno pois o comando seria apenas atribuição de um parametro, então ao em vez de ter retorno double como o getBonificacao ele não teria retorno nenhum ou retorno vazio (void).

public void setTipo(int tipo) {
        this.tipo = tipo;
    }

Aonde quero chegar? O java as coisas são muito especificas, se você declarou que vai ter um retorno de um numero do tipo double, você tem que ter um retorno do tipo double, se você não quiser ter nenhum retorno deve especificar o tipo de retorno void (void é uma palavra em inglês que significa vazio). Como no metodo getBonificacao você declara o tipo de retorno double, o java espera que ao executar este metodo, tenha algum retorno double, se você retira aquela ultima linha, a exceção final do seu código não teria nenhum retorno quando o java espera um retorno double por isso o seu código acaba não compilando.

Para ficar mais claro, o seu código se comporta dessa forma só que da forma que você escreveu fica implicito:

public double getBonificacao() { //Comum
    if(this.tipo == 0) {
        return this.salario * 0.1;
    }
    else if(this.tipo == 1) {
        return this.salario * 0.5;
    }
    else if(this.tipo == 2) {
        return this.salario * 0.75;
    }
    else if(this.tipo == 3) {
        return this.salario+1000.00;
    }
    else {
    return this.salario;
    }
}

Se for do tipo 0, e se for do tipo 1 retorna valor e se for do tipo 2 retorna valor e se for do tipo 3 retorna valor se não for nada disso, retorna o proprio salario, se você tira o return this.salario ali do else um metodo que exige um retorno de um tipo double não teria nenhum retorno causando o erro no compilador.

Espero que tenha ajudado.