Ajuda basica

Opa pessoal, comecei a ter aulas de java nesse semestre e ainda tô capengando, preciso de uma ajudinha.
Não consigo rodar esse programa.
O objetivo é mostrar o nome no vetor[0] e latir.


public class Dog {

String name;

void bark(){
	
	System.out.println("Bark!, Bark!");

}


public static void main(String[] args) {
	
	Dog[] vetor = new Dog[2];
	
	vetor[0].name = "Asterix";
	vetor[1].name = "Toto";
	vetor[2].name = "Jim";
	
	System.out.println(vetor[0]);
	vetor[0].bark();
	
}

}


o erro: ERRO: Exception in thread “main” java.lang.NullPointerException
at Dog.main(Dog.java:17)

Você criou o vetor, mas ainda faltam adicionar as Referencias de Dog nele.

[code]public class Dog {

String name;

void bark(){

System.out.println(“Bark!, Bark!”);

}

public static void main(String[] args) {

Dog[] vetor = new Dog[2];

vetor[0[ = new Dog();
vetor[1[ = new Dog();
vetor[2[ = new Dog();

vetor[0].name = “Asterix”;
vetor[1].name = “Toto”;
vetor[2].name = “Jim”;

System.out.println(vetor[0]);
vetor[0].bark();

}

} [/code]

Obs: sempre coloque seu código dentro de tags “code”. Facilita a visualização.
Abraços.

tenta algo parecido com o que está abaixo

     Dog[] vetor = new Dog[2];


      Dog dog1 = new Dog();
      dog1.name = "Asterix";
      Dog dog2 = new Dog();
      dog2.name = "Toto";
      Dog dog3 = new Dog();
      dog3.name = "Jim";

      vetor[0] = dog1;
      vetor[1] = dog2;
      vetor[2] = dog3;

lgi2020, sua maneira tá rodando mas o nome vem um monte de letras e numeros, talvez relacionado com a posição da memória. Da próxima posto o codigo na tag, nem sabia que existia isso :wink:

paulovloghan, dessa forma continua dando erro de NullPointerException.

Tenta assim

[code]public static void main (String args[]) {
// cria um vetor de dogs
Dog[] dogs = new Dog[3];

	// cria objetos dog
	Dog dog1 = new Dog();
	dog1.name = "Asterix";		
	Dog dog2 = new Dog();
	dog2.name = "Toto";		
	Dog dog3 = new Dog();
	dog3.name = "Jim";
	
	// atribui para os elementos do vetor os objetos criados
	dogs[0] = dog1;
	dogs[1] = dog2;
	dogs[2] = dog3;
	
	for (int i=0; i<dogs.length; i++) {
		System.out.print("o cachorro:"+dogs[i].name+ " faz");
		dogs[i].bark();
		System.out.println();
	}
}[/code]&gt;

[quote=hmoleman]lgi2020, sua maneira tá rodando mas o nome vem um monte de letras e numeros, talvez relacionado com a posição da memória. Da próxima posto o codigo na tag, nem sabia que existia isso :wink:

paulovloghan, dessa forma continua dando erro de NullPointerException.[/quote]

Desculpa, fiz com pressa e nem reparei nas últimas linhas.

O que acontece é que a linha a seguir chama o método toString() da sua classe:

System.out.println(vetor[0]); 

Como você não sobrescreveu este método, ele imprime este “monte de letras e números”.

Substitua esta linha por

System.out.println(vetor[0].name); 

para imprimir o nome do Dog na posição 0 do vetor.

Primeiramente obrigado à todos, o programa rodou tranquilo. São formas diferentes de resolver o mesmo problema.

Como vc comentariam essas linhas:

vetor[0] = new Dog(); vetor[1] = new Dog(); vetor[2] = new Dog();
não tô entendendo muito bem essas referencias.

[quote=hmoleman]Primeiramente obrigado à todos, o programa rodou tranquilo. São formas diferentes de resolver o mesmo problema.

Como vc comentariam essas linhas:

vetor[0] = new Dog(); vetor[1] = new Dog(); vetor[2] = new Dog();
não tô entendendo muito bem essas referencias.[/quote]

Você criou um array do tipo Dog, mas não instanciou objetos para o mesmo. Por isso antes estava dando NullPointerException.
Ai no que você mostrou acima você está instanciando os objetos, depois de fazer isso você pode usar vetor[0].nome = “texto” sem problemas.

[]s