java allows you to create arrays without mentioning the right most dimenesion. so the folloing line works fine
TestDogs [] [] [] theDogs = new TestDogs [3][2][];
but in line below you are accessing elements that have yet to be created
System.out.println(theDogs[2][0][0].toString());
the above line will work if u use something like this
theDogs[3][0]=new int[any size here];
theDogs[3][1]=new int[any size here];
theDogs[3][2]=new int[any size here];
//then this will work fine
System.out.println(theDogs[2][0][0].toString());
hope that helps