Inicializacao de array

11 respostas
jerry17

ola pessoal esteou inicializar arrany com ciclo e tem o seguinte erro

java.lang.NullPointerException

ajudame a identificar erro no metodo iniciararray

************************ meto construtor*****************

public class Aluno {

public String nome;

public int numero;

public String morada;

public int contacto;
public Aluno(String nome, int numero, String morada, int contacto){ // metodo contrut

this.nome=nome;

this.numero=numero;

this.morada=morada;

this.contacto=contacto;

}
public void andar(){ //metodo andar

System.out.println(Estou andando);

}

}

****************** sub class do***********************
public class pessoa extends Aluno{

public pessoa(String nome, int numero, String morada, int contacto){
super(nome, numero, morada, contacto);

}

<a class="mention" href="/u/override">@Override</a>

public void andar(){

System.out.println(“Estou correndo com jerry”);

}

******************* criacao do array e inicializacao **************
public class funcoes {

pessoa la []= new pessoa [1000];

public void inicializararray(){

int i=0;
while(i<la.length){

la[i].nome=null;

la[i].numero=-1;

la[i].morada=null;

la[i].contacto=-1;
i++;

}

}

}

Read more: http://javafree.uol.com.br/topic-889219-duvida-sobre-array.html#ixzz2LXYmxSZz

11 Respostas

jerry17

jerry17:
ola pessoal esteou inicializar arrany com ciclo e tem o seguinte erro

java.lang.NullPointerException

ajudame a identificar erro no metodo iniciararray

************************ meto construtor*****************

public class Aluno {

public String nome;

public int numero;

public String morada;

public int contacto;
public Aluno(String nome, int numero, String morada, int contacto){ // metodo contrut

this.nome=nome;

this.numero=numero;

this.morada=morada;

this.contacto=contacto;

}
public void andar(){ //metodo andar

System.out.println(Estou andando);

}

}

****************** sub class do***********************
public class pessoa extends Aluno{

public pessoa(String nome, int numero, String morada, int contacto){
super(nome, numero, morada, contacto);

}

<a class="mention" href="/u/override">@Override</a>

public void andar(){

System.out.println(“Estou correndo com jerry”);

}

******************* criacao do array e inicializacao **************
public class funcoes {

pessoa la []= new pessoa [1000];

public void inicializararray(){

int i=0;
while(i<la.length){

la[i].nome=null;

la[i].numero=-1;

la[i].morada=null;

la[i].contacto=-1;
i++;

}

}

}

Read more: http://javafree.uol.com.br/topic-889219-duvida-sobre-array.html#ixzz2LXYmxSZz

gusthavosouza

Coloque na Tag code o seu codigo para ficar mais facil a vizualização.

jerry17

como eu faço isso ?

jerry17

o Objectivo e incializar um array com 1000 posisoes por isso usei o while

G
public pessoa(String nome, int numero, String morada, int contacto)

Isso é um construtor da classe,

você devera definir dentro do while algo assim:

while(i<la.length){ 

  la[i++] = new pessoa(null, -1, null, -1); 

}

veja se funciona.

vitordarela

NullPointerException é um erro que a posição do Array indicada é NULA ou você está incerindo um valor NULO ou sejá EM BRANCO sem incrementar o array.
revise sua codificação e o incremento desse Array.

Outro erro, você esta matando o conceito de Orientação a Objeto, A CLASSE PESSOA não pode Ser filha ou EXTENDS de ALUNO, isso seria ao contrário!
ou seja teria que ser Aluno exteds Pessoa

E você não está usando um ARRAY LIST e sim um VETOR!

Isso abaixo não existe !!

la[i].nome=null; la[i].numero=-1; la[i].morada=null; la[i].contacto=-1;

você ta dizendo que o vetor na posição i tem um nome , numero, morada e contato. “la[i].nome” isso não existe! o vetor armazenará apenas uma informação na posição [i] ou seja

la[i] = nome la2[i] = morada la3[i] = numero la4[i] = contato

ou sejá, para cada lista voce ira criar um vetor!

jerry17

tasse bem muito obrigado pela sua dica
sabes aida sou inciante

B

vitordarela:
E você não está usando um ARRAY LIST e sim um VETOR!

Isso abaixo não existe !!

la[i].nome=null; la[i].numero=-1; la[i].morada=null; la[i].contacto=-1;

você ta dizendo que o vetor na posição i tem um nome , numero, morada e contato. “la[i].nome” isso não existe! o vetor armazenará apenas uma informação na posição [i] ou seja

la[i] = nome la2[i] = morada la3[i] = numero la4[i] = contato

ou sejá, para cada lista voce ira criar um vetor!

Vitor, você está errado, o jeito que ele está fazendo é perfeitamente possível, apesar que não seja indicado em POO. Veja que ele está usando atributos públicos na classe. Isso praticamente torna o objeto dele num Struct do C.

Além disso, o código dele ficou melhor em questão de organizar dados correlacionados. Você não tem nenhum garantia que la[i] faz parte do mesmo objeto de la4[i], enquanto la[i].nome e la[i].contato fica mais fácil de visualizar a relação.

De qualquer forma, a prática indicada é deixar um construtor cuidar disso, ficando

arrayPessoas[i] = new Pessoa(nome, morada, numero, contato);
vitordarela

[quote=Bruno Laturner]

vitordarela:
E você não está usando um ARRAY LIST e sim um VETOR!

Isso abaixo não existe !!

la[i].nome=null; la[i].numero=-1; la[i].morada=null; la[i].contacto=-1;

você ta dizendo que o vetor na posição i tem um nome , numero, morada e contato. “la[i].nome” isso não existe! o vetor armazenará apenas uma informação na posição [i] ou seja

la[i] = nome la2[i] = morada la3[i] = numero la4[i] = contato

ou sejá, para cada lista voce ira criar um vetor!

Vitor, você está errado, o jeito que ele está fazendo é perfeitamente possível, apesar que não seja indicado em POO. Veja que ele está usando atributos públicos na classe. Isso praticamente torna o objeto dele num Struct do C.

Além disso, o código dele ficou melhor em questão de organizar dados correlacionados. Você não tem nenhum garantia que la[i] faz parte do mesmo objeto de la4[i], enquanto la[i].nome e la[i].contato fica mais fácil de visualizar a relação.

De qualquer forma, a prática indicada é deixar um construtor cuidar disso, ficando

arrayPessoas[i] = new Pessoa(nome, morada, numero, contato);

Descordo de você, ele teria garantia que o Nome e Endereço e Contato estariao vinculados pois todos estariao adicionados na mesma posição!

Ex:

la[1] = nome
la2[1] = endereço

ou seja

a posição “1” seria a mesma “Pessoa” .
e o jeito que ele fez matou todo o conceito de OO

Aluno tem que Herdar de Pessoa e não ao contrario como ele fez.

Mas enfim, esse é o meu modo de ver o problema, cada programador tem a sua forma de programar e “N” maneiras de resolver este problema!

jerry17

valeu a dica galera agora esta funcionando

vitordarela

Blzz!! Qualquer coisa estamos ai! Renomeia seu Tópico com a TAG [RESOLVIDO] para que outros possao consultar caso tenhao a mesma dúvida que você teve :wink:

Criado 21 de fevereiro de 2013
Ultima resposta 21 de fev. de 2013
Respostas 11
Participantes 5