3
respostas

Erro missing return statement na linha 63

Poderiam me ajudar a identificar esse erro que esta dando no: Funcionario.java:63: error: missing return statement } ^ 1 error

 public boolean comtem(Funcionario f){

        for(int i = 0; i < this.empregados.length; i++){
            Funcionario funcionario = this.empregados[i];
            if(this.empregados[i] == this.empregados[i]){
                System.out.println("Existe");
            } else {
                System.out.println("Não Existe");
            }
        }

    }

Abaixo o código completo:

// dados da empresa
class Empresa {
    private String nome;
    private String cnpj;
    private double salario;

    String departamento;
    String funcao;
    Funcionario[] empregados;
    Data dataEntrada;


    public boolean comtem(Funcionario f){

        for(int i = 0; i < this.empregados.length; i++){
            Funcionario funcionario = this.empregados[i];
            if(this.empregados[i] == this.empregados[i]){
                System.out.println("Existe");
            } else {
                System.out.println("Não Existe");
            }
        }

    }

    void adicionar(Funcionario f) {
        for(int i = 0; i < this.empregados.length; i++){
            if(empregados == null) continue;
            this.empregados[i] = f;
        }
    }

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

    public double getSalario(){
        return this.salario;
    }
}

// trabalhando com datas
class Data {
    int dia;
    int mes;
    int ano;

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

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

// impressão dos funcionairos
class TestaFuncionario {

    public static void main(String[] args) {
        Funcionario f1 = new Funcionario();
        f1.registro = new Empresa();

        f1.setNomeFuncionario("Hugo");
        f1.setNumeroRG("11111111");
        f1.registro.departamento = "Desenvolvedor";
        f1.registro.funcao = "Plataforma ASD";
        f1.registro.setSalario(100.0);
        f1.recebeAumento(50);

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

        f1.mostra();
    }

}

class TestaEmpresa {
    public static void main (String[] args){
        Empresa empresa = new Empresa(); // criei a empresa
        empresa.empregados = new Funcionario[10]; // disse que nessa empresa tem 10 funcionarios

        Funcionario f1 = new Funcionario();
        f1.registro = new Empresa();
        f1.dataDeEntrada = new Data();

        f1.setNomeFuncionario("Daniel");
        f1.setNumeroRG("22222222");
        f1.registro.departamento = "Desenvolvimento";
        f1.registro.funcao = "App Master";  
        f1.registro.setSalario(1000.0);
        f1.dataDeEntrada.preencheData(1,8,2014);

        empresa.adicionar(f1);
        empresa.empregados[0].mostra();
    }
}
3 respostas

Olá Andressa,

O problema ocorre pois seu método está declarado para retornar um boolean porém você não está retornando nenhum boolean, acredito que o melhor forma de resolver seria fazer da seguinte forma:

public boolean comtem(Funcionario f){

        for(int i = 0; i < this.empregados.length; i++){
            Funcionario funcionario = this.empregados[i];
            if(this.empregados[i] == this.empregados[i]){
                    System.out.println("Existe");
                    return true;
             } 
        }
    System.out.println("Não Existe");
    return false;
}

Muito obrigado era isso mesmo, eu achei que era isso, e tinha colocado como String e continuou dando o erro.

Dessa forma não era para dar certo?

public String comtem(Funcionario f){

        for(int i = 0; i < this.empregados.length; i++){
            Funcionario funcionario = this.empregados[i];
            if(this.empregados[i] == this.empregados[i]){
                System.out.println("Existe");
            } else {
                System.out.println("Não Existe");
            }
        }

    }

Olá Andressa,

Dessa forma que você colocou nao funciona, o método System.out.println não retorna nada, ele apenas imprime no console, para retornar você precisa utilizar a palavra chave return, para retornar a String você teria que fazer da seguinte forma:

public String comtem(Funcionario f){

        for(int i = 0; i < this.empregados.length; i++){
            Funcionario funcionario = this.empregados[i];
            if(this.empregados[i] == this.empregados[i]){
               return "Existe";
            } else {
                return "Não Existe");
            }
        }

    }