无法理解核心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。putSystem.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;ij++
等于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的条件,使我陷入困境。谢谢大家!!