Help in java code (Beginner)

-1

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

Class Company:

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

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

I tried to use:

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

Full Code:

Class Officer:

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

}

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



}

Company 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");
    //   }
  }

}
    
asked by anonymous 19.09.2017 / 19:44

2 answers

2

I think the problem should be indicated at the end of this line

Funcionario[] funcionario = new Funcionario[numeroDeFuncionario];

The real problem is the next line - to clarify I'll 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 becomes clear that the for command is directly inside the class, outside of a method or constructor. In Java, execution (not declaration) commands must come within a method, constructor, or boot block.

This code should

or go in a method that should be called elsewhere:

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

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

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

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

    Empresa() {
        for (int i = 0; i <= numeroDeFuncionario; i++) {
            ...
    }
    
20.09.2017 / 08:30
0

I saw the question and I think no one 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 test in a simple way what you need. I used lists, because it is recommended for treatment of several objects of the same type. I hope I have 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();
        }
    }

}
    
20.09.2017 / 11:53