Ajuda basica

8 respostas
H

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)

8 Respostas

M

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

lgi2020
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();

}


}

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

P

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;
H

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.

Andre_Fonseca

Tenta assim

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();
		}
	}
>
lgi2020

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.

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.

H

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.

G

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.

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

Criado 8 de setembro de 2008
Ultima resposta 8 de set. de 2008
Respostas 8
Participantes 6