Finding The Output

Question 1 :

What will be the output of the program?

public class CommandArgsThree 
{
    public static void main(String [] args) 
    {
        String [][] argCopy = new String[2][2];
        int x;
        argCopy[0] = args;
        x = argCopy[0].length;
        for (int y = 0; y < x; y++) 
        {
            System.out.print(" " + argCopy[0][y]);
        }
    }
}
and the command-line invocation is
> java CommandArgsThree 1 2 3


A). 0 0
B). 1 2
C). 0 0 0
D). 1 2 3
Answer : Option D

Explanation :

In argCopy[0] = args;, the reference variable argCopy[0], which was referring to an array with two elements, is reassigned to an array (args) with three elements.


Question 2 :

What will be the output of the program?

public class CommandArgs 
{
    public static void main(String [] args) 
    {
        String s1 = args[1];
        String s2 = args[2];
        String s3 = args[3];
        String s4 = args[4];
        System.out.print(" args[2] = " + s2);
    }
}
and the command-line invocation is
> java CommandArgs 1 2 3 4


A). args[2] = 2
B). args[2] = 3
C). args[2] = null
D). An exception is thrown at runtime.
Answer : Option D

Explanation :

An exception is thrown because in the code String s4 = args[4];, the array index (the fifth element) is out of bounds. The exception thrown is the cleverly named ArrayIndexOutOfBoundsException.


Question 3 :

public class F0091 
{    
    public void main( String[] args ) 
    {  
        System.out.println( "Hello" + args[0] ); 
    } 
}
What will be the output of the program, if this code is executed with the command line:
> java F0091 world


A). Hello
B). Hello Foo91
C). Hello world
D). The code does not run.
Answer : Option D

Explanation :

Option D is correct. A runtime error will occur owning to the main method of the code fragment not being declared static:
Exception in thread "main" java.lang.NoSuchMethodError: main
The Java Language Specification clearly states: "The main method must be declared public, static, and void. It must accept a single argument that is an array of strings."


Question 4 :

What will be the output of the program?

public class TestDogs 
{
    public static void main(String [] args) 
    {
        Dog [][] theDogs = new Dog[3][];
        System.out.println(theDogs[2][0].toString());
    }
}
class Dog { }


A). null
B). theDogs
C). Compilation fails
D). An exception is thrown at runtime
Answer : Option D

Explanation :

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.


Question 5 :

What will be the output of the program ?

public class Test 
{
    public static void main(String [] args) 
    {
        signed int x = 10;
        for (int y=0; y<5; y++, x--)
            System.out.print(x + ", ");
    }
}


A). 10, 9, 8, 7, 6,
B). 9, 8, 7, 6, 5,
C). Compilation fails.
D). An exception is thrown at runtime.
Answer : Option C

Explanation :

The word "signed" is not a valid modifier keyword in the Java language. All number primitives in Java are signed. Hence the Compilation will fails.


Question 6 :

What will be the output of the program?

public class CommandArgsTwo 
{
    public static void main(String [] argh) 
    {
        int x;
        x = argh.length;
        for (int y = 1; y <= x; y++) 
        {
            System.out.print(" " + argh[y]);
        }
    }
}
and the command-line invocation is
> java CommandArgsTwo 1 2 3


A). 0 1 2
B). 1 2 3
C). 0 0 0
D). An exception is thrown at runtime
Answer : Option D

Explanation :

An exception is thrown because at some point in (System.out.print(" " + argh[y]);), the value of x will be equal to y, resulting in an attempt to access an index out of bounds for the array. Remember that you can access only as far as length - 1, so loop logical tests should use x < someArray.length as opposed to x < = someArray.length.


Question 7 :

In the given program, how many lines of output will be produced?

public class Test 
{
    public static void main(String [] args) 
    {
    int [] [] [] x = new int [3] [] [];
    int i, j;
    x[0] = new int[4][];
    x[1] = new int[2][];
    x[2] = new int[5][];
    for (i = 0; i < x.length; i++)
    {
        for (j = 0; j < x[i].length; j++) 
        {
            x[i][j] = new int [i + j + 1];
            System.out.println("size = " + x[i][j].length);
        }
    }
    }
}


A). 7
B). 9
C). 11
D). 13
E). Compilation fails
Answer : Option C

Explanation :

The loops use the array sizes (length).
It produces 11 lines of output as given below.
D:\Java>javac Test.java
D:\Java>java Test
size = 1
size = 2
size = 3
size = 4
size = 2
size = 3
size = 3
size = 4
size = 5
size = 6
size = 7
Therefore, 11 is the answer.


Question 8 :

What will be the output of the program?

public class X 
{
    public static void main(String [] args) 
    {
        String names [] = new String[5];
        for (int x=0; x < args.length; x++)
            names[x] = args[x];
        System.out.println(names[2]);
    }
}
and the command line invocation is
> java X a b


A). names
B). null
C). Compilation fails
D). An exception is thrown at runtime
Answer : Option B

Explanation :

The names array is initialized with five null elements. Then elements 0 and 1 are assigned the String values "a" and "b" respectively (the command-line arguments passed to main). Elements of names array 2, 3, and 4 remain unassigned, so they have a value of null.