+ 1
Explain this code?
int x = 0; int y = 0; for(int z =1; z<5;z++){ if((++x>2) && (++y>1)){ x++; } } System.out.println(x+ "" +y); I don't understand this code.
2 ответов
+ 9
way 1)
● Outer for loop will run 4 times [ie for z = 1,2,3,4]
● NOTE : a && b , where a & b are condition ... in that case if 1st condition a is false , then no need to check 2nd condition that is b here : as answer will be false only [it is called short-circuiting]
● for z=1 : 1 is NOT > 2 (no need to check ++y>1) // x=1,y=0
for z=2 : 2 is NOT > 2 (no need to check ++y>1) //x=2,y=0
for z=3 : 3 > 2 now checking ++y>1(1 is NOT >1) // x=3,y=1
for z=4 : 4 > 2 && 2>1 so .. x=4 & y=2 , since whole condition becomes true so x++; will also execute ...ie x=5 & y=2 .
//prints 52
way 2)[alternatively]
● see that U have number of times loop will run is 4
● see that number of times increment is needed in x to make 1st condition true is 3 , so check & do increment in y in 3rd time //x=3,y=1
● 4th time , both condition will satisfy so inner statement will also execute
//ie , x=5 & y=2
+ 2
In the if the x and y get an augment.
The y variabel only get augmented when the x > 2 is true.