Array de objetos

Boa tarde pessoal, estou com problema , eu criei uma classe com o nome Dog e e na classe de teste q chamei de DogTeste e nessa classe estou criando um objeto de matriz do tipo Dog só q não estou conseguindo fazer com que o resultado apareça no console está dando
o seguinte erro:Exception in thread “main” java.lang.NullPointerException
at controller.DogsTest.main(DogsTest.java:17).
O meu código está desse jeito:

package controller;

import model.Dogs;

public class DogsTest {

public static void main(String[] args) {

	Dogs[] dog=new Dogs[3];
	
	dog[0]=new Dogs();
	
	dog[0].name="fido";
	dog[0].size=20;
	dog[0].barck();
	
	dog[1].name="Troll";
	dog[1].size=30;
	dog[1].barck();
	
	dog[2].name="Sany";
	dog[2].size=20;
	dog[2].barck();
	
	int x=0;
	
    	while(x<dog.length) {
    		
    	    dog[x].name;
    		
    		x++;
    	}
    	
   } 

}

Aguem poderia me dar um help?

Você apenas instanciou um objeto Dog e o atribuiu no index 0.
Os outros 2 indexes (1 e 2) estão null (valor padrão).
Então faça a mesma coisa:

dog[1] = new Dog();
dog[2] = new Dog();
1 curtida

Valeu amigo mas ainda está dando este erro:

Lati
Lati
Lati
“model.Dogs@4517d9a3
model.Dogs@372f7a8d
model.Dogs@2f92e0f4”

Só está mostrando a ação do método que criei chamado barck() o name e o size não está
aparecendo.

Mostre o código do seu objeto Dogs.
Ele provavelmente não implementa o método toString()

Ok:

package model;

public class Dogs {

 public String name;
 
 public int size;
 
 public void barck() {
	 
	 System.out.println("Lati");
	 
 }
 
 public void eat() { }
 
 public void chaseCat() {  }

}

Alô amigo boa noite. Está n escuta?

Em quais momentos você chamou o método println?
Acho que o código principal não tá atualizado.
No método main não tem nenhum print.

Boa noite amigo, consegui resolver o p com sua ajuda fico muito agradecido. Eu coloquei

dessa forma no final da main():

System.out.println(dog[x].name);
System.out.println(dog[x].size); Desse modo aparece no console o nome , o tamanho e a

ação de cada método de cada objeto. Muito obrigado.

Tenha o hábito de dar nomes coerentes às suas classes e variáveis.

Cada instância da classe Dogs representa um único cachorro, então ela deveria se chamar Dog, no singular.

O seu array dog, armazena vários cachorros, então ele deveria se chamar dogs, no plural.

Veja seu código refatorado:

package controller;

import model.Dog;

public class DogsTest {

    public static void main(String[] args) {
        Dog[] dogs = new Dog[3];

        dogs[0] = new Dog();
        dogs[0].name="fido";
        dogs[0].size=20;

        dogs[1] = new Dog();
        dogs[1].name = "Troll";
        dogs[1].size = 30;

        dogs[2] = new Dog();
        dogs[2].name = "Sany";
        dogs[2].size = 20;

        int x = 0;
        while (x < dogs.length) {
            Dog dog = dogs[x];
            System.out.println(dog.name);
            System.out.println(dog.size);
            dog.barck();
            System.out.println();
            x++;
        }
    } 
}

Eu recomendo você inserir getters e setters, esse tipo de pratica está bem ultrapassada isso pode te dar muita dor de cabeça um dia.

Na maioria dos casos, getters e setters são um falso encapsulamento pois simplesmente são métodos de delegação que expõe um atributo privado como se ele fosse público.
Dê uma lida nos materiais e livros do Robert C. Martin (Uncle Bob), autor do “Código Limpo” (“Clean Code”).