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.
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
paulovloghan, dessa forma continua dando erro de NullPointerException.
[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]>
[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
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.
[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.