在 java 上无法正常工作

For not working properly on java

我有 class Empresa 和 class Funcionario,当我试图给员工增加薪水时,它编译但不工作。这里的代码:

函数:

class Funcionario{
        String departamento;
        String dataEntrada;
        String rg;
        String nome;
        String ferias;
        double salario;

        void recebeAumento(double aumento){
                this.salario += aumento;
        }

        double calculaGanhoAnual(){
                this.salario = salario * 12;
                return salario;
        }

        void mostra(){
                System.out.println("Nome: " + this.nome);
                System.out.println("Salário: " + this.salario);
                System.out.println("Departamento: " + this.departamento);
                System.out.println("RG: " + this.rg);
                System.out.println("Data de admissão: " + this.dataEntrada);
                System.out.println("Ganho anual: " + calculaGanhoAnual());
        }
}

class Empresa{
        String nome;
        String cnpj;
        Funcionario [] empregados = new Funcionario[10];

        void adiciona(Funcionario func){
                for(int i = 0; i < empregados.length; i++){/*i começa da posição 0 e tera o tamanho da
array empregados*/
                        if(empregados[i] == null){//se a posição estiver vazia
                                empregados[i] = func; /* a array recebe o valor de func que for adicionado pelo
metodo void*/
                                break;
                        }
                }
        }

        void mostraEmpregados(){
                Funcionario func = new Funcionario();
                for(int i = 0; i < this.empregados.length; i++){
                        System.out.println("Funcionário na posição: " + i);
                        System.out.println("Salário do funcionário: " +  func.salario);
                }
        }
}

和测试 class:

class TestaEmpresa{
        public static void main (String [] args){
                Empresa emp = new Empresa();
                emp.empregados = new Funcionario[10];
                Funcionario func = new Funcionario();
                for(int i = 0; i < 5; i++){
                        func.salario = 1000.0 + i * 100;
                        emp.adiciona(func);
                }

                emp.mostraEmpregados();
        }
}

经过运行测试,我得到数组的位置和工资null,像这样:

Funcionário na posição: 0
Salário do funcionário: 0.0
Funcionário na posição: 1
Salário do funcionário: 0.0
Funcionário na posição: 2
Salário do funcionário: 0.0
Funcionário na posição: 3
Salário do funcionário: 0.0

您没有从数组中检索元素。

System.out.println("Salário do funcionário: " +  func.salario);

应该是

System.out.println("Salário do funcionário: " +  this.empregados[i].salario);

此外,在访问 this.empregados[i].salario.

之前,您可能应该确保 this.empregados[i] 不为空

错误出在您的打印方法中

   void mostraEmpregados(){
                Funcionario func = new Funcionario();
                for(int i = 0; i < this.empregados.length; i++){
                        System.out.println("Funcionário na posição: " + i);
                        System.out.println("Salário do funcionário: " +  func.salario);
                }
        }

更改为

System.out.println("Funcionário na posição: " + i);
                        System.out.println("Salário do funcionário: " +  this.empregados[i].salario);

你不需要那个对象 Funcionario func = new Funcionario();