Problems displaying an array of functionalities in a Main class

Asked

Viewed 60 times

0

I have 3 classes involved in this error: Testaempresa, Empresa,.

My idea is to create an array of employees within Company and print in Testaempresa. For this I made within Funcio a method called "show()". This should issue the output via a "System.out.prinln()" for each attribute that is in Funcio. 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 put the classes for possible analysis:

Testaempresa:

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());
        }
    }
}

Enterprise:

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;

}


}

Functionary:

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 employee vector that is located in the company class. So using the method shows that it appears in employees. But I believe you are having some problem in this call.

I didn’t use any Boolean method by the way and yet this error appeared talking about Boleano. I would like you to help me understand better why I had this problem. And what might be causing this error.

  • Watch your if(ativo){...}, in class Funcionario. It is unclear if you are using the boolean method asset demite() or if it is the boolenado method isAtivo(). Looking at your code, I understood that you should/could use if(isAtivo()){...}. If the asset is true, it prints yes, otherwise;

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 method is being called void, 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 method mostra() is not returning what should be printed, it is printing itself. So, to fix the problem, it is necessary to just invoke this printing method without trying to print your empty return:

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

2

You’re trying to run a println in a method that returns nothing (void) follows below the excerpt:

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

Try it like this:

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

Browser other questions tagged

You are not signed in. Login or sign up in order to post.