Java Programming - Language Fundamentals - Discussion

Discussion Forum : Language Fundamentals - Finding the output (Q.No. 4)
What will be the output of the program?

public class TestDogs 
    public static void main(String [] args) 
        Dog [][] theDogs = new Dog[3][];
class Dog { }
Compilation fails
An exception is thrown at runtime
Answer: Option

The second dimension of the array referenced by theDogs has not been initialized. Attempting to access an uninitialized object element (System.out.println(theDogs[2][0].toString());) raises a NullPointerException.

14 comments Page 1 of 2.

Queen said:   9 years ago
public class Test
public static void main(String [] args)
int [][] theDogs = new int[2][];

The above program will give throw the same Exception NullPointer because we have only declared an array and not initialized it.

Now check the below program i.e. after initializing the array.

public class Test . This code will print the value 3
public static void main(String [] args)
int [][] theDogs = new int[][] {{1,2},{3,4}};

Arjun said:   9 years ago
Dog [][] the Dogs = new Dog[3][];

The Dogs[2] = new Dog[7]; // Initialize the 3rd row of the Dogs 2D array.

The Dogs[2][0] = new Dog (); // Initialize the Dog instance at the 1st column of the 3rd row.

System.out.println (the Dogs[2][0].toString ()); // Now you can execute methods of the Dogs[2][0].

Manoj said:   1 decade ago
Hi I am Manoj,

The above problem ,

nullpointerException means,

Date d;//d holds null value
d.getyear();//this raises java.lang.NullpointerException


Date d=new Date();
//this will not raises java.lang.NullpointerException

Vinix said:   1 decade ago
Though we have

Dog [][] theDogs = new Dog[3][];

This comment is an uninitialized array of "Objects"

If you recall that an uninitialized object contain null pointer which actually points to nothing.

Hence the Exception.

Sri said:   1 decade ago
In the above program we have initialized just first column not second one. So we are getting null pointer exception.

Rohit said:   1 decade ago

But they had.

Dog [][] theDogs = new Dog[3][]

As in your example Date d= new Date()

Piyali said:   9 years ago
Dog[][] the Dogs = new Dog[3][];

Should be replaced by int Dog[][] the Dogs = new Dog[3][any no.];

Shr said:   7 years ago
But Dog is a class. And if we want to create an array fo object we need only one subcript.

Devi said:   5 years ago
Dog is a class and why the object has been created like that?

Lucky said:   10 years ago
Can anyone explain that what's the solution of this problem.

Post your comments here:

Your comments will be displayed after verification.