[英]unable to understand Core java for loop and switch case statement logic
这是我的问题。 以下代码中{j++;}
的用途是什么?为什么我注释{j++;}
尽管j = 0为什么不在case(0)内。 没有{j++;}
行的答案输出为0。为什么不是1。
class Strings {
public static void main(String args[]) {
int i, j = 0;
for (i = 10; i < 0; i--) {
j++;
}
switch (j) {
case (0):
j = j + 1;
case (1):
j = j + 2;
break;
case (2):
j = j + 3;
break;
case (10):
j = j + 10;
break;
default:
break;
}
System.out.println(j);
}
}
因为没有break语句,所以它进入0情况和1情况。将System.out.println()
放入情况内部,您可以自己找到发生的事情
initially j is zero . because you for loop not run as condition is false (10<1) is false.
case (0) : //goes inside of this case because j==0;
j=j+1;
//now j is 1 and goes to case 1
case (1): //goes to this case too
j = j + 2; //now j is 3
break; //exit from here
因为将i设置为10并仅当i小于0时才进入循环,因此for循环永远不会运行
它确实进入情况0,但是当您错过“ break”语句时,您将继续执行下面的内容,直到遇到中断为止,因此在这种情况下,当j == 0时,您将同时执行情况0和情况1。
class Strings {
public static void main(String args[]) {
int i,j=0;
for(i=10;i<0;i--)
{ j++; }
switch(j) {
case (0) :
j=j+1;
break;
case(1):
j=j+2;
break;
case (2) :
j=j+3;
break;
case (10) :
j=j+10;
break;
default :
break;
}
System.out.println(j);
}
}
这就是您想要的。
j++
等于j = j+1
或j += 1
在这种情况下,for循环执行了10次,因此之后您有j == 10
此外,您必须在第一个case
语句中插入一个break
。 实际上,一旦switch
识别出您的变量等于0,它将执行前两个语句(直到找到break
)。
Jagadish
:
建议您使用Toggle Breakpoint
并查看变量更改,例如Eclipse中的i
, j
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.