Problema com vetor ---> NullPointerException

9 respostas
N

Pessoal, estou fazendo um dicionario. Tenho uma classa RegistroDicionario, dentro tem somente duas variaveis publicas “portugues” e “ingles”. no metodo main criei um RegistroDicionario[] vetor = new RegistroDicionario[20]
so que quando tento alterar os dados de cada registro, ele da NullPointerException, não consigo enxergar o erro no código, se alguem puder me ajudar eu agradeço, o codigo ta embaixo:

public static void main(String[] args) {
		
		RegistroDicionario[] vet = new RegistroDicionario[2];

		vet[0].portugues = "Vermelho";
		vet[0].ingles = "Red";
		
		vet[1].portugues = "Mesa";
		vet[1].ingles = "Table";
		
		System.out.println("0 = "+vet[0].portugues+", 1 = "+vet[1].portugues);
		
	}

Agradeço, abraço.

9 Respostas

LPJava

o que é esse . portugues ?

poe o codigo completo…

J

Falta isso:

<blockquote> RegistroDicionario[] vet = new RegistroDicionario[2];

vet[0] = new RegistroDicionario();

vet[1] = new RegistroDicionario();
vet[0].portugues = "Vermelho";   
    vet[0].ingles = "Red";   
       
    vet[1].portugues = "Mesa";   
    vet[1].ingles = "Table";   </blockquote>

Você só definiu o tamanho para o array mas não criou as instancias…

rodrigues.danilo

Boa tarde.

A correção para o seu objetivo é:

public static void main(String[] args) {

		RegistroDicionario[] vet = new RegistroDicionario[2];

		vet[0] = new RegistroDicionario();
		vet[0].portugues = "Vermelho";
		vet[0].ingles = "Red";

		vet[1] = new RegistroDicionario();
		vet[1].portugues = "Mesa";
		vet[1].ingles = "Table";

		System.out.println("0 = " + vet[0].portugues + ", 1 = "
				+ vet[1].portugues);

	}

Mas cara, preciso ser honesto contigo: seu código tá horrível! PELO AMOR DE DEUS! REMOVE ESSES ATRIBUTOS PÚBLICOS! Coloca os getters e setters.
Pelo que vejo você está iniciando com OO. Dá uma estuda na teoria antes, depois vai implementar. E quando for implementar, procure as boas práticas!

Abs.

zepunk

Quando você estancia um vetor as posições dele continua com null.
ou seja vc precisa estanciar as posições do seu vetor.

RegistroDicionario[] vet = new RegistroDicionario[2];  
   
vet[0] = new  RegistroDicionario();
vet[0].portugues = "Vermelho";  
vet[0].ingles = "Red";
LPJava
rodrigues.danilo:
Boa tarde.

A correção para o seu objetivo é:

public static void main(String[] args) {

		RegistroDicionario[] vet = new RegistroDicionario[2];

		vet[0] = new RegistroDicionario();
		vet[0].portugues = "Vermelho";
		vet[0].ingles = "Red";

		vet[1] = new RegistroDicionario();
		vet[1].portugues = "Mesa";
		vet[1].ingles = "Table";

		System.out.println("0 = " + vet[0].portugues + ", 1 = "
				+ vet[1].portugues);

	}

Mas cara, preciso ser honesto contigo: seu código tá horrível! PELO AMOR DE DEUS! REMOVE ESSES ATRIBUTOS PÚBLICOS! Coloca os getters e setters.
Pelo que vejo você está iniciando com OO. Dá uma estuda na teoria antes, depois vai implementar. E quando for implementar, procure as boas práticas!

Abs.

pust ]é verdae agora que entendi o seria o portugues... ta mal o codigo mesmo.

So nao fica nervoso com o cara nao... :D

rodrigues.danilo

nipo_style, putz cara! Acho que a forma como eu escrevi parece que fiquei nervoso… :? Não fiquei não cara! E o importante mesmo é você expor seu código… Postar em fóruns e talz… Tirar dúvida mesmo!
Só não esquece de deixar aqueles atributos privados! Ok?

Abs!

N

vlwww gente funciono, me esqueci de dar new :wink:
e o codigo eh assim msm, pq isso eh apenas um registro n precisa ter encapsulamento
vlww!! abraço

A

Boa tarde amigo.

Concordo com os demais, está meio confuso seu código, mas esqueçamos isso para o momento,
está faltando você instanciar as posições do array, lembre também que usar array tem suas vantagens,
mas só quando é possível prever seu tamanho, dê uma olhada em e linkedlist.

RegistroDicionario[] vet = new RegistroDicionario[2];

vet[0] = new  RegistroDicionario();

vet[0].portugues = Vermelho;

vet[0].ingles = Red;

Saudações

AdemarSanches

L

é o seguinte oque voce criou foi ume vetor de objetos, quando se cria um vetor de objetos de inicio se cria apenas as referencias. para instanciar o vetor, quero dizer criar os objetos voce deve fazer o seguinte.

vet[0] = new ClasseObjeto();

Criado 6 de maio de 2008
Ultima resposta 10 de mai. de 2008
Respostas 9
Participantes 7