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

NullPointerException em Arrays

class Funcionario {
    //--<Atributos>--
    int         id;          
    String         nome;        
     double         salario;      
    Data         dataAdmissao; 
    Data        dataDemissao;
    int            departamento; 
    int            setor;        
    int            secao;        
    String        rg;           
    String        cpf;          
    String      situacao;     


    //--< Metodos >--

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

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

    void demitirFuncionario(){
        this.situacao = "I";
        //this.dataDemissao = "28/12/2016";
    }

    void admitirFuncionario(){
        this.situacao = "A";
        //this.dataAdmissao = "28/12/2016";
    }

    String getDataFormatada(Data dataAdmissao ){

        return(dataAdmissao.dia +"/"+dataAdmissao.mes+"/"+dataAdmissao.ano);
    }
    void mostra(){

        System.out.println("ID: " + this.id);
        System.out.println("nome: " + this.nome);
        System.out.println("Salario: " + this.salario);
        //System.out.println("Data Admissao: " + this.dataAdmissao);
        System.out.println("Dia : " + this.dataAdmissao.dia);
        System.out.println("Mes : " + this.dataAdmissao.mes);
        System.out.println("Ano : " + this.dataAdmissao.ano);
        System.out.println("Data Demissao: " + this.dataDemissao);
        System.out.println("Departamento: " + this.departamento);
        System.out.println("Setor: " + this.setor);
        System.out.println("Secao: " + this.secao);
        System.out.println("RG: " + this.rg);
        System.out.println("CPF: " + this.cpf);
        System.out.println("Situacao: " + this.situacao);

    }
}
class Empresa{
    int id;
    String nome;
    String cnpj;
    Funcionario [] empregados;
    int livre;


    void adicionar(Funcionario f ){
        this.empregados[this.livre] = f;
        this.livre++;    
    }
}

class TestaEmpresa{


    public static void main(String [] Args){

        Empresa empresa = new Empresa();
        empresa.empregados = new Funcionario[10];


        for (int i=1; i<=10; i++){
            Funcionario f1 = new Funcionario();
            f1.id = i;
            f1.salario = (i * 1000);

            empresa.adicionar(f1);
        }        

        for ( Funcionario x : empresa.empregados){

            System.out.println( "Empregado ID: " + x.id + " Salario: " + x.salario);
        }

        //for (Funcionario y : empresa.empregados ){
        //    y.mostra();
        //}

        for ( int i = 1    ; i<=10; i++){

            empresa.empregados[i].mostra();
        }

    }
}

Neste último For ocorre o nullPointerException, entendo que o erro ocorre por fazer referência a um índice de array inválido , mas quando listo empresa.empregado no For anterior o atributo empregados da classe Empresa está carregado.

3 respostas
solução!

Olá, Vanderlei! =)

Acabei de ver aqui, acredito que você possa ter aberto duas threads para a mesma dúvida sem querer. Eu respondi na outra, vamos deixar somente na outra (https://cursos.alura.com.br/forum/topico-nullpointerexception-em-arrays-29822), pode ser? =)

Abraços,

Fábio

Vanderlei acredito que o seu erro é o array, lembra que o array começa do 0? então você criou um array com 10 posições e depois fez um laço para percorrer todas as posições e nele declarou com 10, assim vai dar erro, mas estanho que o erro de posições é outro erro. Mais nao consegui achar outro erro há não ser esse

Ok, obrigado ! Vou verificar.