"--------------------Configuration: --------------------
Exception in thread “main” java.lang.NullPointerException
at Orgao.main(Orgao.java:19)
Process completed."
classEmpresas{Stringcnpj;Funcionarios[]empresaFuncList;voidadicionaFunc(Funcionariosf,intx){// acredito que o erro esteja na minha sintaxe aqui....this.empresaFuncList[x]=f;}}classFuncionarios{Stringname;intage;}publicclassOrgao{publicstaticvoidmain(Stringargs[]){Funcionarios[]funcList=newFuncionarios[100];funcList[0].name="John";funcList[0].age=31;funcList[1].name="Mark";funcList[1].age=29;EmpresaseletroShop=newEmpresas();eletroShop.empresaFuncList=newFuncionarios[8];eletroShop.adicionaFunc(funcList[1],0);//aqui que ta dando problema, ele deveria adicionar o funcionário "funcList[1]"(Mark) na lista de funcionarios "empresaFuncList" da empresa "eletroShop" na posição "0", mas estou fazendo algo errado!}}
eu fiz isso na main... pq se eu fizer na classe Empresa, toda empresa q eu criar vai ter o mesmo numero de funcionarios. fazendo isso na main eu posso definir diferentes tamanhos de listas para diferentes empresas
adriano_si
Cara... tenta assim...
classEmpresas{Stringcnpj;Funcionarios[]empresaFuncList;voidadicionaFunc(Funcionariosf,intx){// acredito que o erro esteja na minha sintaxe aqui....this.empresaFuncList[x]=f;}}classFuncionarios{Stringname;intage;}publicclassOrgao{publicstaticvoidmain(Stringargs[]){Funcionarios[]funcList=newFuncionarios[]{newFuncionarios(),newFuncionarios()};funcList[0].name="John";funcList[0].age=31;funcList[1].name="Mark";funcList[1].age=29;EmpresaseletroShop=newEmpresas();eletroShop.empresaFuncList=newFuncionarios[8];eletroShop.adicionaFunc(funcList[1],0);}}
Lembras que quando crias um Array de Funcionarios, ainda nao tens nenhum Objeto funcionario para esse Array... quando fizeres o funcList[0].name
esse funList[0] não tem nenhum Objeto pra poder chamar seu atributo name... Por isso o nullPointer...
[EDIT] Pode ser assim também
funcList[0] = new Funcionarios();
funcList[0].name = "John";
funcList[0].age = 31;
funcList[1] = new Funcionarios();
funcList[1].name = "Mark";
funcList[1].age = 29;
A
arthuraml
adriano_si:
Cara... tenta assim...
classEmpresas{Stringcnpj;Funcionarios[]empresaFuncList;voidadicionaFunc(Funcionariosf,intx){// acredito que o erro esteja na minha sintaxe aqui....this.empresaFuncList[x]=f;}}classFuncionarios{Stringname;intage;}publicclassOrgao{publicstaticvoidmain(Stringargs[]){Funcionarios[]funcList=newFuncionarios[]{newFuncionarios(),newFuncionarios()};funcList[0].name="John";funcList[0].age=31;funcList[1].name="Mark";funcList[1].age=29;EmpresaseletroShop=newEmpresas();eletroShop.empresaFuncList=newFuncionarios[8];eletroShop.adicionaFunc(funcList[1],0);}}
Lembras que quando crias um Array de Funcionarios, ainda nao tens nenhum Objeto funcionario para esse Array... quando fizeres o funcList[0].name
esse funList[0] não tem nenhum Objeto pra poder chamar seu atributo name... Por isso o nullPointer...
[EDIT] Pode ser assim também
funcList[0] = new Funcionarios();
funcList[0].name = "John";
funcList[0].age = 31;
funcList[1] = new Funcionarios();
funcList[1].name = "Mark";
funcList[1].age = 29;
deu certo, mas nao entendo oq vc fez, pq vc repetiu o "new Funcionarios()" ? minha array n ficou sem tamanho definido desse jeito? como q funciona?
A
arthuraml
ahhhhhhhhhhhhhhhhhhh
entendi!!!
A
arthuraml
daquele jeito “Funcionarios[] funcList = new Funcionarios[]{new Funcionarios(), new Funcionarios()};” nao deu erro mas eu tbm n entendi a logica disso
adriano_si
Cara… Quando você instancia um Array… imagina que você está criando um Objeto que guarda valores… Quando você faz isso
Funcionarios[]funcList=newFuncionarios[100];
Você está criando somente 1 Objeto que é um Array de Funcionários e dizendo que esse Objeto tem espaço pra receber 100 Objetos do tipo Funcionarios. Porém você não tem nenhum Objeto Funcionarios criado, voc~e só tem a vaga do estacionamento mas não tem nenhum carro estacionado nessa vaga. Quando você pede pra ele setar a propriedade nama do funcList[0] no espaço [0] não existe um objeto Funcionarios, logo a VM emite um NullPointer, pois não há nada pra quem ela possa setar um nome…