Hi i saw this question online and i was trying to solve it but i just could not understand how the answered was determined.

int[] n = {0, 1, 0, -1}; for (int i = 1; i < n.length; i++) { if (n[i] == 0 && n[i - 1] != 0) { int x = n[i - 1]; n[i - 1] = n[i]; n[i] = x; } } System.out.println(n[2]);

The answer is 1 which i have no idea how or why is it 1. Wonder if anyone is kind enough to explain why is the answer 1.

## Answer

The code block inside the `if`

swaps the two numbers in `n[i]`

and `n[i - 1]`

.

The `if`

itself (The condition) checks if the `n[i]`

is zero and `n[i - 1]`

is non-zero.

The loop runs over all `i`

values from 1 to the end of the array.

Let’s follow the loop run, shall we? (row numbers are `i`

value)

`n[1]`

is 1,`n[0]`

is 0 – condition false and`if`

block not entered.`n[2]`

is 0,`n[1]`

is 1 – condition true and`if`

block entered. Now`n[2]`

is 1,`n[1]`

is 0.`n[3]`

is -1,`n[2]`

is 1 – condition false and`if`

block not entered.

End of array.

So `n[2]`

is 1.