Problems displaying an array of functionaries in a Main class

0

I have 3 classes involved in this error: TestCompany, Company, Employee.

My idea is to create an employee array within Enterprise and print it at TestaEmpresa. For this I made a function called "show ()". It should issue the output through a "System.out.prinln ()" for each attribute that is in the Official. But I got the following error when trying to compile the classes.

  

Error: The method println (boolean) in the type PrintStream is not applicable for the arguments (void).

I will now place the classes for analysis:

TestCompany:

package projetoMeuBanco;

public class TestaEmpresa {

    public static void main(String[] args) {


//Crie um objeto de classe empresa.

        Empresa empresa = new Empresa();

//Array de Funcionarios:

        empresa.setFuncionarios(new Funcionario[5]);

//Crie alguns funcionarios e preencha seus atributos, em seguida add a classe empresa.

        Funcionario func1 = new Funcionario();
        Funcionario func2 = new Funcionario();
        Funcionario func3 = new Funcionario();
        func1.setNome("Aldo");
        func2.setNome("Baldo");
        func3.setNome("Caldo");

        func1.dataDeNascimento.setDia("16");
        func1.dataDeNascimento.setMes("02");
        func1.dataDeNascimento.setAno("1997");

        func2.dataDeNascimento.setDia("17");
        func2.dataDeNascimento.setMes("03");
        func2.dataDeNascimento.setAno("1998");

        func3.dataDeNascimento.setDia("18");
        func3.dataDeNascimento.setMes("04");
        func3.dataDeNascimento.setAno("1999");


//Add os funcionarios a empresa.

        empresa.adciona(func1);
        empresa.adciona(func2);
        empresa.adciona(func3);




//Usando o foreach percorra funcionarios da empresa.

        for (Funcionario f: empresa.funcionarios)
        {
            System.out.println(f.mostra());
        }
    }
}

Company:

package projetoMeuBanco;

public class Empresa{

 private String nome, cnpj;

 protected Funcionario[] funcionarios;

 private int posicaoLivre;

public void adciona (Funcionario func) {

    this.funcionarios[this.posicaoLivre]=func;

    this.posicaoLivre++;

}

public Funcionario[] getFuncionarios() {

    return funcionarios;

}

public void setFuncionarios(Funcionario[] funcionarios) {

    this.funcionarios = funcionarios;

}


}

Officer:

package projetoMeuBanco;

//Atributos

public class Funcionario {

private String nome;//get e set

private String departamento;//get e set

private double salario=1000;//get

private boolean ativo;//is e set

protected Data dataDeNascimento = new Data();



public void aumentarSalario(double aumento) {

    this.salario=this.salario*aumento;

}

public void mostra() {

    System.out.println("Nome: "+this.nome+".");

    System.out.println("Salário: "+this.salario+".");

    System.out.println("Data de nascimento: "+dataDeNascimento.data());

    System.out.println("Está na empresa?");

    if(ativo) {

        System.out.print("Sim\n");

    }else {

        System.out.print("Não\n");

    }

}
public boolean demite() {

    ativo=false;

    return ativo;

}
public String getNome() {

    return nome;

}

public void setNome(String nome) {

    this.nome = nome;

}

public String getDepartamento() {

    return departamento;

}

public void setDepartamento(String departamento) {

    this.departamento = departamento;

}

public boolean isAtivo() {

    return ativo;

}

public void setAtivo(boolean ativo) {

    this.ativo = ativo;

}

public double getSalario() {

    return salario;

}

}

These codes are in the same package and I wanted to call the officials vector that is located in the company class. So using the method shows that it is in officials. But I think you're having a problem with that call.

I did not use any boolean method by the way and yet this error appeared speaking Boolean. I would like you to help me understand better because I had this problem. And what may be causing this error.

    
asked by anonymous 01.10.2018 / 17:18

2 answers

2

See the error message:

  

Error: The method println (boolean) in the type PrintStream is not applicable for the arguments (void).

This means that in the line you are printing, a void method is being called, that is, a method that has no return:

// Classe TestaEmpresa
for (Funcionario f: empresa.funcionarios)
{
    System.out.println(f.mostra());
}

// Classe funcionário, que possui o método mostra
public void mostra() {

    System.out.println("Nome: "+this.nome+".");

    System.out.println("Salário: "+this.salario+".");

    System.out.println("Data de nascimento: "+dataDeNascimento.data());

    System.out.println("Está na empresa?");

    if(ativo) {

        System.out.print("Sim\n");

    }else {

        System.out.print("Não\n");

    }

}

Your mostra() method is not returning what you want to print, it is printing itself. So to fix the problem, you just need to invoke this printing method, without trying to print your empty return:

// Classe TestaEmpresa
for (Funcionario f: empresa.funcionarios)
{
    f.mostra();
}
    
01.10.2018 / 17:59
2

You are trying to execute a println on a method that returns nothing ( void ) below the excerpt:

//Usando o foreach percorra funcionarios da empresa.
for (Funcionario f: empresa.funcionarios)
{
     System.out.println(f.mostra());
}
  

Try this:

//Usando o foreach percorra funcionarios da empresa.
for (Funcionario f: empresa.funcionarios)
{
     f.mostra();
}
    
01.10.2018 / 18:00