繁体   English   中英

无法理解Core Java for循环和切换case语句逻辑

[英]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+1j += 1在这种情况下,for循环执行了10次,因此之后您有j == 10此外,您必须在第一个case语句中插入一个break 实际上,一旦switch识别出您的变量等于0,它将执行前两个语句(直到找到break )。

Jagadish

建议您使用Toggle Breakpoint并查看变量更改,例如Eclipse中的ij 在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM