Java Programming - Java.lang Class - Discussion

Discussion Forum : Java.lang Class - Finding the output (Q.No. 5)
5.
What will be the output of the program?
public class Example 
{
    public static void main(String [] args) 
    {
        double values[] = {-2.3, -1.0, 0.25, 4};
        int cnt = 0;
        for (int x=0; x < values.length; x++) 
        {
            if (Math.round(values[x] + .5) == Math.ceil(values[x])) 
            {
                ++cnt;
            }
        }
        System.out.println("same results " + cnt + " time(s)");
    }
}
same results 0 time(s)
same results 2 time(s)
same results 4 time(s)
Compilation fails.
Answer: Option
Explanation:

Math.round() adds .5 to the argument then performs a floor(). Since the code adds an additional .5 before round() is called, it's as if we are adding 1 then doing a floor(). The values that start out as integer values will in effect be incremented by 1 on the round() side but not on the ceil() side, and the noninteger values will end up equal.

Discussion:
11 comments Page 2 of 2.

John said:   8 years ago
First Loop:

(x=0; 0<4; x++) // true.
(-2.3 plus 0.5) with round function = -2 == (-2.3) with ceiling function = -2.0.
-2 == -2.0 = True so cnt =1.

Second Loop:

(x=1; 1<4; x++) // true
(-1.0 plus 0.5) with round function = 0 == (-1.0) with ceiling function = -1.0.
0 == -1.0 = False so cnt =1.

Third Loop:

(x=2; 2<4; x++) // true
(0.25 plus 0.5) with round function = 1 == (0.25) with ceiling function is 1.0.
1 == 1.0 = True, so cnt=2.

Fourth Loop:

(x=3; 3<4; x++) // true
(4.0 plus 0.5) with round function = 5 == (4.0) with ceiling function is 4.0.
5 == 4 = False, so cnt=2.

Fifth Loop:

(x=4; 4<4; x++) // false ( 4<4 ) so, loop finish.
Print: same results 2 time(s).
(1)


Post your comments here:

Your comments will be displayed after verification.