pq ta dando isso?
"--------------------Configuration: --------------------
Exception in thread “main” java.lang.NullPointerException
at Orgao.main(Orgao.java:19)
Process completed."
class Empresas {
String cnpj;
Funcionarios[] empresaFuncList;
void adicionaFunc (Funcionarios f, int x) { // acredito que o erro esteja na minha sintaxe aqui....
this.empresaFuncList[x] = f;
}
}
class Funcionarios {
String name;
int age;
}
public class Orgao {
public static void main(String args[]) {
Funcionarios[] funcList = new Funcionarios[100];
funcList[0].name = "John";
funcList[0].age = 31;
funcList[1].name = "Mark";
funcList[1].age = 29;
Empresas eletroShop = new Empresas();
eletroShop.empresaFuncList = new Funcionarios[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!
}
}
Onde vc inicializa a variável eletroShop?
copiei o codigo errado. agora editei e consertei.
eh q na hora de copiar o codigo pra ca eu fiz mudanças pra ficar mais facil pro pessoal aqui ler e entender
enfim, taih o codigo, e ta dando esse erro ai q eu botei… =(
class Empresas {
String cnpj;
Funcionarios[] empresaFuncList; //Falta inicializar o array antes de adicionar valores, por exemplo, Funcionarios[] empresaFuncList = new Funcionarios[100];
void adicionaFunc (Funcionarios f, int x) { // acredito que o erro esteja na minha sintaxe aqui....
this.empresaFuncList[x] = f;
}
}
[quote=Giulliano][code]
class Empresas {
String cnpj;
Funcionarios[] empresaFuncList; //Falta inicializar o array antes de adicionar valores, por exemplo, Funcionarios[] empresaFuncList = new Funcionarios[100];
void adicionaFunc (Funcionarios f, int x) { // acredito que o erro esteja na minha sintaxe aqui....
this.empresaFuncList[x] = f;
}
}
[/code][/quote]
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
Cara… tenta assim…
[code]class Empresas {
String cnpj;
Funcionarios[] empresaFuncList;
void adicionaFunc (Funcionarios f, int x) { // acredito que o erro esteja na minha sintaxe aqui....
this.empresaFuncList[x] = f;
}
}
class Funcionarios {
String name;
int age;
}
public class Orgao {
public static void main(String args[]) {
Funcionarios[] funcList = new Funcionarios[]{new Funcionarios(), new Funcionarios()};
funcList[0].name = "John";
funcList[0].age = 31;
funcList[1].name = "Mark";
funcList[1].age = 29;
Empresas eletroShop = new Empresas();
eletroShop.empresaFuncList = new Funcionarios[8];
eletroShop.adicionaFunc(funcList[1], 0);
}
}[/code]
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
[code]funcList[0] = new Funcionarios();
funcList[0].name = “John”;
funcList[0].age = 31;
funcList[1] = new Funcionarios();
funcList[1].name = "Mark";
funcList[1].age = 29;[/code]
[quote=adriano_si]Cara… tenta assim…
[code]class Empresas {
String cnpj;
Funcionarios[] empresaFuncList;
void adicionaFunc (Funcionarios f, int x) { // acredito que o erro esteja na minha sintaxe aqui....
this.empresaFuncList[x] = f;
}
}
class Funcionarios {
String name;
int age;
}
public class Orgao {
public static void main(String args[]) {
Funcionarios[] funcList = new Funcionarios[]{new Funcionarios(), new Funcionarios()};
funcList[0].name = "John";
funcList[0].age = 31;
funcList[1].name = "Mark";
funcList[1].age = 29;
Empresas eletroShop = new Empresas();
eletroShop.empresaFuncList = new Funcionarios[8];
eletroShop.adicionaFunc(funcList[1], 0);
}
}[/code]
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
[code]funcList[0] = new Funcionarios();
funcList[0].name = “John”;
funcList[0].age = 31;
funcList[1] = new Funcionarios();
funcList[1].name = "Mark";
funcList[1].age = 29;[/code][/quote]
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?
daquele jeito “Funcionarios[] funcList = new Funcionarios[]{new Funcionarios(), new Funcionarios()};” nao deu erro mas eu tbm n entendi a logica disso
Cara… Quando você instancia um Array… imagina que você está criando um Objeto que guarda valores… Quando você faz isso
Funcionarios[] funcList = new Funcionarios[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…
Essa sintaxe
Funcionarios[] funcList = new Funcionarios[]{new Funcionarios(), new Funcionarios()};
nada mais é do que uma forma de iniciar o Array colocando 2 Objetos dentro dele…
Falows 