Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

print out for java exercise explanation

Tags:

java

I'm trying to understand the following Java exercise. Even running the debugger I don't understand the details of the second and third printout:

1, 2, 3, 4

1, 2, 4, 4

1, 2, 4, 8

I understand that the first print is the array as it is, second line prints [2] element of the array and third line [3] element. Here is the code:

public class TR1
{
    public static void main(String[] args)
    {
        int[] v =  {1, 2, 3, 4 };
        print(v);
        x(v, v[2] - 1);
        print(v);
        x(v, v[3] - 1);
        print(v);
    }

    public static void x(int array[], int y)
    {
        array[y] = array[y - 1] * 2;
    }

    public static void print(int array[])
    {
        System.out.print(array[0]);
        for (int i = 1; i < array.length; i++)
            System.out.print(", " + array[i]);
        System.out.println();
    }
}
like image 531
matrix Avatar asked May 15 '17 14:05

matrix


People also ask

What is print out in Java?

println(): println() method in Java is also used to display a text on the console. This text is passed as the parameter to this method in the form of String. This method prints the text on the console and the cursor remains at the start of the next line at the console.

What is the output of this code Java?

Explanation: The output of the Java compiler is bytecode, which leads to the security and portability of the Java code. It is a highly developed set of instructions that are designed to be executed by the Java runtime system known as Java Virtual Machine (JVM).

How do I print out numbers in Java?

out. print() method, in Java, prints the value passed as the parameter to it, on the console screen and the cursor remains on the next character of the last printed character on the console.


2 Answers

Lets briefly walk you through the first things that happen. You start with this array:

1 2 3 4

No surprise when printing that.

Then you run:

x(v, v[2] -1 ) ... evaluates to

x(v, 3 - 1)    ... evaluates to

x(v, 2)

Which changes the array based on:

array[y] = array[y - 1] * 2;

Lets insert y as 2 (see above):

array[2] = array[1] * 2;

array[2] = 2 * 2;

leading to:

1, 2, 4, 4

So, the real answer is: you don't even need a debugger. A piece of paper, a pen and a bit of thinking is even more efficient to uncover the "secrets" here.

like image 186
GhostCat Avatar answered Oct 28 '22 19:10

GhostCat


Let's see what this method does :

public static void x(int array[], int y)
    {
        array[y] = array[y - 1] * 2;
    }

It takes the value at index y-1, multiplies it by 2, then assigns this result to the index y .

Starting array : {1,2,3,4}

The call with v[2] - 1 takes the value at index 2 (which is 3), and substracts 1, so we have y = 2.

From what we said before, the method takes the value at index 1 (y-1) which is 2, multiplies it by 2 so we get 4, and assigns that to the index 2 (y) .

Current array : {1,2,4,4}

The call with v[3] - 1 takes the value at index 3 (which is 4), and substracts 1, so we have y = 3.

From what we said before, the method takes the value at index 2 (y-1) which is 4, multiplies it by 2 so we get 8, and assigns that to the index 3 (y) .

Current array : {1,2,4,8}

like image 40
Arnaud Avatar answered Oct 28 '22 19:10

Arnaud