无法理解核心java for循环和开关案例语句逻辑

无法理解核心java for循环和开关案例语句逻辑,java,for-loop,switch-statement,Java,For Loop,Switch Statement,这是我的问题。在下面的代码中,{j++;}有什么用?为什么我要注释{j++;}尽管j=0,为什么它不在大小写(0)中。不带{j++;}行的答案输出为0。为什么不呢 class Strings { public static void main(String args[]) { int i, j = 0; for (i = 10; i < 0; i--) { j++; } switch (j) {

这是我的问题。在下面的代码中,
{j++;}
有什么用?为什么我要注释
{j++;}
尽管j=0,为什么它不在大小写(0)中。不带
{j++;}
行的答案输出为0。为什么不呢

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);
    }
}
类字符串{
公共静态void main(字符串参数[]){
int i,j=0;
对于(i=10;i<0;i--){
j++;
}
开关(j){
案例(0):
j=j+1;
案例(1):
j=j+2;
打破
案例(2):
j=j+3;
打破
案例(10):
j=j+10;
打破
违约:
打破
}
系统输出println(j);
}
}

因为没有break语句。它会转到0 case和1 case。放入
System.out.println()
在case中,您可以自己找到发生的事情

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

最初j为零。因为for loop not run as condition为false(10,因为没有break语句。它会转到0和1个case。put
System.out.println()
在case中,您可以自己找到发生的事情

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

最初j为零。因为for循环not run as条件为false(10您的for循环将永远不会运行,因为您将i设置为10,并且仅当i小于0时才进入循环您的for循环将永远不会运行,因为您将i设置为10,并且仅当i小于0时才进入循环情况0,但是如果您错过了“中断”语句继续执行下面的内容,直到遇到断点,所以在本例中,当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);
       }
}
类字符串{
公共静态void main(字符串参数[]){
int i,j=0;

对于(i=10;i它确实进入到案例0中,但是当您错过一个“break”语句时,您只需继续执行下面的语句,直到遇到一个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);
       }
}
类字符串{
公共静态void main(字符串参数[]){
int i,j=0;

对于(i=10;i
j++
等于
j=j+1
j+=1
在这种情况下,for循环被执行10次,因此在此之后您有
j==10

此外,您必须在第一个
case
语句中插入
break
。事实上,一旦
开关
识别出您的变量等于0,它就会执行前两个语句(直到他找到
break

j++
等于
j=j+1
j+=1
在这种情况下,for循环被执行10次,因此在此之后您有
j==10
此外,您必须在第一个
case
语句中插入
break
。事实上,一旦
开关
识别出您的变量等于0,它就会执行前两个语句(直到他找到
break

Jagadish

建议您使用
切换断点
并查看变量更改,如Eclipse中的
i
j
Jagadish

建议您使用
切换断点
并查看变量更改,如Eclipse中的
i
j

在案例0之后没有
中断;
,因此案例1也被使用。至少您需要调试一次。如果您的输出是0,而不是3,请向我们展示您的注释。它只是一行
j++;
还是整个循环体,即
{j++}
?如果是,switch语句将永远不会运行,因为它将是循环的主体,由于循环条件中的错误,它将永远不会运行。如果删除
{j++}
for
将整个语句
switch
转换为loop.MyBad!我忽略了for的条件,让我陷入困境。谢谢大家!!案例0之后没有
break;
,所以也使用了案例1。至少您需要调试一次。如果您的输出是0,而不是3,请向我们展示您的评论。是否只是行
j++;
或循环的整个主体,即
{j++;}
?如果是,switch语句将永远不会运行,因为它将是循环主体,由于循环条件中的错误,它永远不会运行。如果删除
{j++}
for
将整个语句
switch
转换为loop.MyBad!我忽略了for的条件,使我陷入困境。谢谢大家!!