Java code help (Beginner)

Asked

Viewed 349 times

-1

I wrote this code in java to study. (I’m learning) but when I try to create a new error object.

Class Empresa :

class Empresa {
  String nome = "";
  String cnpj = "";
  int numeroDeFuncionario = 1;
  Funcionario[] funcionario = new Funcionario[numeroDeFuncionario];

But I have to create an "employee[i] = new employee" ?

tried to use :

for (int i = 0; i <= numeroDeFuncionario; i++) {
  this.funcionario [0] = new Funcionario();
}

Codigo Completo:

Staff Class:

class Funcionario {
  String nome = "";
  String departamento = "";
  double salario = 0;
  Data dataDeEntrada = new Data();
  String rg = "";

  void recebeAumento(double aumento) {
    System.out.println("O salario atual e: "+this.salario);
    this.salario += aumento;
    System.out.println("O novo salario e: "+this.salario);
  }

  void calculaGanhoAnual() {
    System.out.println("O salario anual e: "+12*this.salario);
  }

  void mostra() {
    //escreve todos os parametros de Funcionario
    System.out.println("Nome e : "+this.nome);
    System.out.println("Departamento e : "+ this.departamento);
    System.out.println("Salario e : R$"+this.salario);
    System.out.println("Ganho anual de : R$"+this.salario*12);
    this.dataDeEntrada.getData();
    System.out.println("Rg e : "+this.rg);
  }

}

Data class:

class Data {
  int dia = 01;
  int mes = 01;
  int ano = 1900;

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

  void getData() {
    String data = dia+"/"+mes+"/"+ano;
    System.out.println("Data de Entrada e : "+data);
  }



}

Business Class:

class Empresa {
  String nome = "";
  String cnpj = "";
  int numeroDeFuncionario = 1;
  Funcionario[] funcionario = new Funcionario[numeroDeFuncionario];

//   if (this.funcionario == null) {
    for (int i = 0; i <= numeroDeFuncionario; i++) {
      this.funcionario [0] = new Funcionario();
  }
//
// }


//   void adicionarFuncionario() {}
//
}

class TestaFuncionario{
  public static void main(String[] args) {
    Funcionario f1 = new Funcionario();

    Empresa emp1 = new Empresa();

    System.out.println(emp1.funcionario);
    System.out.println(emp1.funcionario[0]);

    emp1.funcionario[0] = new Funcionario();


    // f1.nome = "Hugo";
    // f1.salario = 100;
    // f1.recebeAumento(50);
    //
    // f1.calculaGanhoAnual();
    //
    // f1.mostra();
    // System.out.println("\n\n");

    // Funcionario f2 = new Funcionario();
    // f2.nome = "Hugo";
    // f2.salario = 100;
    // f2.recebeAumento(50);
    // f2.mostra();

    // Funcionario f2 = f1;
    //
    // if (f1 == f2) {
    //   System.out.println("Iguais");
    // } else {
    //     System.out.println("Diferentes");
    //   }
  }

}
  • 1

    this.funcionario[i] = new Funcionario();

  • 1

    this.funcionario [0] = new Funcionario(); within the for it will instantiate several times the initial position and does not initialize the rest

  • Your doubt is because you need to create the objects within the array funcionarios[] using loop instead of these objects being created together with the array?

  • What’s the mistake ?

2 answers

2


I think the problem should be indicated in the end of that line

Funcionario[] funcionario = new Funcionario[numeroDeFuncionario];

The real problem is the next line - to clarify I will repeat the part in question (some lines deleted):

// parte para mostrar o erro - não é a solução
class Empresa {
    ...
    Funcionario[] funcionario = new Funcionario[numeroDeFuncionario];

    for (int i = 0; i <= numeroDeFuncionario; i++) {

Here it is clear that the command for is directly within the class, outside a method or constructor. In Java the execution commands (not the declaration ones) must come within a method, constructor or boot block.

That code should

or go in a method that must be called elsewhere:

class Empresa {
    ...
    Funcionario[] funcionario = new Funcionario[numeroDeFuncionario];

    void inicializar() {
        for (int i = 0; i <= numeroDeFuncionario; i++) {
            ...
    }

or in the constructor that is executed when the instance is created (new Empresa()):

class Empresa {
    ...
    Funcionario[] funcionario = new Funcionario[numeroDeFuncionario];

    Empresa() {
        for (int i = 0; i <= numeroDeFuncionario; i++) {
            ...
    }

0

I saw the question and I don’t think anyone noticed that there were no builders for the Employee class. Getters and Setters are also useful and good practices for assigning the value of variables outside the class. So I created the following code to simply test what you need. I used lists because it is recommended for treatment of various objects of the same type. I hope I helped.

    package empresa.funcionario;

    import java.util.ArrayList;
    import java.util.List;

    public class Funcionario {
    //dados
    String nome;
    String departamento;
    double salario;
    String rg;
    int numero;
    //construtor por defeito
    Funcionario() {
    }
    //construtor com parametros
    Funcionario(int numero) {
        this.numero = numero;
    }
    //getters e setters
    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 double getSalario() {
        return salario;
    }
    public void setSalario(double salario) {
        this.salario = salario;
    }
    public String getRg() {
        return rg;
    }
    public void setRg(String rg) {
        this.rg = rg;
    }
    public int getNumero() {
        return numero;
    }
    public void setNumero(int numero) {
        this.numero = numero;
    }
    void recebeAumento(double aumento) {
        System.out.println("O salario atual e: " + this.salario);
        this.salario += aumento;
        System.out.println("O novo salario e: " + this.salario);
    }

    void calculaGanhoAnual() {
        System.out.println("O salario anual e: " + 12 * this.salario);
    }

    void mostra() {
        // escreve todos os parametros de Funcionario
        System.out.println("Nome e : " + this.nome);
        System.out.println("numero e :" + this.numero);
        System.out.println("Departamento e : " + this.departamento);
        System.out.println("Salario e : R$" + this.salario);
        System.out.println("Ganho anual de : R$" + this.salario * 12);
        System.out.println("Rg e : " + this.rg);
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //inicalizar lista de funcionarios vazia
        List<Funcionario> funcionarios = new ArrayList<Funcionario>();
        //preencher funcionarios
        for (int i = 0; i < 5; i++) {
            funcionarios.add(new Funcionario(i));
        }
        //mostrar lista de funcionarios
        for (int i = 0; i < funcionarios.size(); i++) {
            funcionarios.get(i).mostra();
        }
    }

}

Browser other questions tagged

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