The output is 241.But I am getting the answer 151.Please help me for the answer 241 since I have spend myself on this problem for 2 days and couldn�t figure out the correct answer.
wise owen
Ranch Hand
Joined: Feb 02, 2006
Posts: 2023
posted
0
Adding some of println statement may help you to understand why.
[ September 22, 2006: Message edited by: wise owen ]
Joshua Antony
Ranch Hand
Joined: Jun 05, 2006
Posts: 254
posted
0
hi Shiva,
FIRST ITERATION:
h=0:
i=1 j=0; k=h+i+j =1
So switch(1) which results in calling of case 1: continue label2 - will result in execution of while condition again NOT the do one so ++j means j=1;
Then the do condition... i=2 k=h+i+j = 0+2+1 =3.
now case 3: break label2; -- break out of the while loop and to the next iteration of for loop.
Second Iteration:
h=1... I think you should figure out from here what happens.
Hope this will help. Regards, Joshua
SCJP,SCWCD, Into ATG now!
Shiva Mohan
Ranch Hand
Joined: Jan 05, 2006
Posts: 465
posted
0
I have figured out where I was going wrong and this time of my hand calculation got the correct answer with the help of wise and Joshua. Thank you very much. I wouldn�t have figured it out without your help. Thanks again for your time. Great work.
Burkhard Hassel
Ranch Hand
Joined: Aug 25, 2006
Posts: 1274
posted
0
Hi Shiva,
I think I can guess where your frown came from.
These labels can be tricky, especially in a do-while loop. Where does the "continue" jump in this example?
It's tempting to say: "Well, it jumps to the label, and the next line is do, followed by if (i==2)." But that's wrong. The continue jumps to the while and the i is incremented. If it wouldn't, the example would be an endless loop. But it isn't, it will print out
013READY
In the example the same would happen if you said continue; (without label).