Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Problema ao acessar atributo de um objeto de array

Olá pessoal, estou tentando acessar o atributo nome na classe funcionários porém eu não consigo.

Ao menos pra mim, realizei devidamente a referência corretamente ao objeto e também a instanciação.

Gostaria de saber porque estou errando, se alguém puder me ajudar eu agradeceria muito!

Aqui está o erro: Exception in thread "main" java.lang.NullPointerException at Arrays_Exercicio4.Testa.main(Testa.java:13)

package Arrays_Exercicio4;

public class Testa {



    public static void main(String[] args) {
        // TODO Auto-generated method stub


        Empresa empresa = new Empresa();

        System.out.println(empresa.funcionarios[0].nome);





    }

}
package Arrays_Exercicio4;

class Empresa {

     Funcionario[] funcionarios = new Funcionario[5];

     void setar1(){
         this.funcionarios[0].nome = "Lavezzi";
     }

    }
package Arrays_Exercicio4;

 class Funcionario {

    String nome;
    double salario;

    void setNome(String nome){
        this.nome = nome;
    }

    void setSalario(double salario){
        this.salario = salario;
    }

    String getNome(){
        return this.nome;
    }

    double getSalario(){
        return this.salario;
    }

}

Também gostaria de saber se o uso do this está correto em todas as classes. Obrigado á quem puder me ajudar!

3 respostas
solução!

Bom dia, Alessandro!

No primeiro código você usa

empresa.funcionarios[0].nome

Entretanto, você não instanciou um objeto do tipo Funcionario para a posição 0 (zero) do array de funcionários.

Lembre-se que

Funcionario[] funcionarios = new Funcionario[5];

apenas cria um vetor de funcionários, mas não instanciou o objeto Funcionario dentro de cada posição. Você precisa fazer isso antes de setar alguma coisa, como

this.funcionarios[0].nome = "Lavezzi";

Instancia os objetos após a criação dos arrays e testa de novo. Deve funcionar.

Abraço.

Muito Obrigado Manoel, ajudou muito!

A solução dada pelo Manoel para aqueles que também tiverem a mesma dúvida:

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

Perfeito, Alessando!

Mandou bem! É isso mesmo!

Bons estudos.

Abraço.