Java Programming - Flow Control - Discussion
Discussion Forum : Flow Control - Finding the output (Q.No. 3)
3.
What will be the output of the program?
public class Switch2
{
final static short x = 2;
public static int y = 0;
public static void main(String [] args)
{
for (int z=0; z < 3; z++)
{
switch (z)
{
case x: System.out.print("0 ");
case x-1: System.out.print("1 ");
case x-2: System.out.print("2 ");
}
}
}
}
Answer: Option
Explanation:
The case expressions are all legal because x is marked final, which means the expressions can be evaluated at compile time. In the first iteration of the for loop case x-2 matches, so 2 is printed. In the second iteration, x-1 is matched so 1 and 2 are printed (remember, once a match is found all remaining statements are executed until a break statement is encountered). In the third iteration, x is matched. So 0 1 and 2 are printed.
Discussion:
26 comments Page 1 of 3.
Rhin said:
4 years ago
Let me explain,
public class Switch2
{
final static short x = 2;//it will never change the value of x
public static int y = 0;
public static void main(String [] args)
{
for (int z=0; z < 3; z++)
{
switch (z)
{
case x: System.out.print("0 ");
case x-1: System.out.print("1 ");
case x-2: System.out.print("2 ");
}
}
}
}
Iteraton->1 :z=0->switch(0)
goes to case (x-2)-> case(2-2)->case(0):
So 2 will be printed .
======================
Iteration->2 z gets incremented ->z=1->switch(1)
goes to case(x-1)->case(2-1) ->case(1):
prints 1 and there is no break statement so goes to next print statement prints 2.
======================
Iteration->3 z gets incremented ->z=2 ->switch(2)
goes to case(x)->case(2)->case(2):
prints 0 and there is no break statement so 1 and 2 will gets printed
ANd the final output will be->2 1 2 0 1 2.
public class Switch2
{
final static short x = 2;//it will never change the value of x
public static int y = 0;
public static void main(String [] args)
{
for (int z=0; z < 3; z++)
{
switch (z)
{
case x: System.out.print("0 ");
case x-1: System.out.print("1 ");
case x-2: System.out.print("2 ");
}
}
}
}
Iteraton->1 :z=0->switch(0)
goes to case (x-2)-> case(2-2)->case(0):
So 2 will be printed .
======================
Iteration->2 z gets incremented ->z=1->switch(1)
goes to case(x-1)->case(2-1) ->case(1):
prints 1 and there is no break statement so goes to next print statement prints 2.
======================
Iteration->3 z gets incremented ->z=2 ->switch(2)
goes to case(x)->case(2)->case(2):
prints 0 and there is no break statement so 1 and 2 will gets printed
ANd the final output will be->2 1 2 0 1 2.
(1)
Prashant Chittam said:
1 decade ago
For those guys who don't understand the code.
Why 3rd condition met..
x is static and its 2.
So 2-2 is the first condition for switch and for loop z=0 is true which is less than 3.
So 2 is getting print.
Now z++ is increased to 1 so the value of z=1.
Again 2-1 is the second condition for switch, and for loop z=1 is true which is less than 3.
So 1 is getting print...with 2 because after printing 1 ..there is no break so that it continue with print 2.
Now the last ...z++ is increased to 2 so the value of z=2.
Which is our static final variable which satisfies case 1.
So it prints 0 with 1 and 2. Because again there is no break so that is continues printing up to end of switch block.
Read carefully.
Why 3rd condition met..
x is static and its 2.
So 2-2 is the first condition for switch and for loop z=0 is true which is less than 3.
So 2 is getting print.
Now z++ is increased to 1 so the value of z=1.
Again 2-1 is the second condition for switch, and for loop z=1 is true which is less than 3.
So 1 is getting print...with 2 because after printing 1 ..there is no break so that it continue with print 2.
Now the last ...z++ is increased to 2 so the value of z=2.
Which is our static final variable which satisfies case 1.
So it prints 0 with 1 and 2. Because again there is no break so that is continues printing up to end of switch block.
Read carefully.
Yeshi said:
7 years ago
Hi.
1. The Final Keyword is like constant keyword in C, we can not re-assign the value once it is declared.
2. As per switch statement, when the value of z is 0 than the case with 0 will get executed.
( switch statement compares the value of a variable to the values specified in case of statements then first).
So first time 0 is printed.
Similarly for other scenarios.
3.Y is just initialized but not used just to make the program look complex.
1. The Final Keyword is like constant keyword in C, we can not re-assign the value once it is declared.
2. As per switch statement, when the value of z is 0 than the case with 0 will get executed.
( switch statement compares the value of a variable to the values specified in case of statements then first).
So first time 0 is printed.
Similarly for other scenarios.
3.Y is just initialized but not used just to make the program look complex.
Derya said:
1 decade ago
It doesn't, does it! I think this is wrong.
case x: System.out.print("0 "); x=2
case x-1: System.out.print("1 "); x=1
case x-2: System.out.print("2 "); x=0
z has 3 values 1,2,3 at each iteration of the loop, so it should only print 1 and 0
case x: System.out.print("0 "); x=2
case x-1: System.out.print("1 "); x=1
case x-2: System.out.print("2 "); x=0
z has 3 values 1,2,3 at each iteration of the loop, so it should only print 1 and 0
Raju said:
1 decade ago
Friends ,
If we didn't use break keyword after case statement the next
Case also automatically printed
In first case case3 satisfies so o/p=2
In second case case2 satisfies so o/p=1 2
In third case case3 satisfies so o/p= 0 1 2
Final output is 212012
If we didn't use break keyword after case statement the next
Case also automatically printed
In first case case3 satisfies so o/p=2
In second case case2 satisfies so o/p=1 2
In third case case3 satisfies so o/p= 0 1 2
Final output is 212012
Rimsha Fazal said:
9 years ago
I didn't understand how the conditions are matching in the program. There are simple values given by z in every iteration which is executed and printed what's the roll of x and y then?
Hardik patel said:
1 decade ago
But you have passed z as an argument in switch case, and in the case you are doing simple function irrespective of z.
I don't understand it what's the work of z in x, x-1, x-2.
I don't understand it what's the work of z in x, x-1, x-2.
Ali said:
1 decade ago
Raju you explained very well and easily.
Prasanth x is static but in this time final is important any way you also explained well.
Thanks all of you.
Prasanth x is static but in this time final is important any way you also explained well.
Thanks all of you.
Singh Sahaab said:
1 decade ago
The answer is option D because there is no break statement encountered between cases. If you'll don't believe then code and run it.
Kundan said:
1 decade ago
Final keyword used in java to declare a variable as a constant. Value of these types of variable can, t change during run time.
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers