public static void main(String[] args) {
// TODO Auto-generated method stub
int sum=0,i;
for (i=1;i<=4;i++) {
switch (i) {
case 1:
sum=sum+2;
case 2:
sum=sum+4;
continue;
case 3:
sum=sum+16;
break;
}

}
}大哥大姐,要怎么理解啊,求详细解答,附注释。

解决方案 »

  1.   

    int sum=0,i; //z这里就是 int sum =0 ;int i = 0;一个意思 
    for (i=1;i<=4;i++) {//for循环
    switch (i) {//传入i比较
    case 1://i是否等于1
    sum=sum+2;
    case 2://
    sum=sum+4;
    continue;//继续执行
    case 3:
    sum=sum+16;
    break;//跳出for
    }
      

  2.   

    switch case穿透。查下就明白了
      

  3.   

    int sum=0,i; //z这里就是 int sum =0 ;int i = 0;一个意思  
    for (i=1;i<=4;i++) {//for循环
    switch (i) {//传入i比较
    case 1://i是否等于1
    sum=sum+2;
    case 2://
    sum=sum+4;
    continue;//继续执行
    case 3:
    sum=sum+16;
    break;//跳出for
    }你在每一个case 的第一句加上一个System.out.println(...)就很清楚程序是怎么运行的
      

  4.   


    public static void main(String[] args) {
    // TODO Auto-generated method stub
    int sum=0,i;
    for (i=1;i<=4;i++) {
    switch (i) {
    case 1:
    sum=sum+2; //没有任何转移说明,则接续执行下面的语句
    case 2:
    sum=sum+4;
    continue; //遇到这个就说明循环结构的下面代码就不执行了,直接执行i++,然后判断
    case 3:
    sum=sum+16;
    break; //遇到这个就说明循环结构到头了,马上就要跳出循环了
    } }
    }
      

  5.   

    int sum=0,i; //z这里就是 int sum =0 ;int i = 0;一个意思  
    for (i=1;i<=4;i++) {//for循环
    switch (i) {//传入i比较
    case 1://i是否等于1
     sum=sum+2;
     case 2://
     sum=sum+4;
     continue;//继续执行
    case 3:
     sum=sum+16;
     break;//跳出for
     }
      

  6.   

    int sum=0,i; 与 int sum=0;int i=0;
    不可同日而语。
    前者i是没有初始化的,后面在使用前必须初始化,否则编译器报错。
      

  7.   

    当i=1时,执行sum=sum+2;sum=sum+4;continue;此时sum=6
    当n=2时,执行sum=sum+4;continue;此时sum=10
    当n=3时,执行sum=sum+16;break;
    当n=4时,什么都没有执行
    如果swith语句放在循环中则可以正常使用continue关键词。在这里break依然用来结束switch语句;而continue则结束本次循环,跳到循环语句的判断处,continue后面的语句都不执行。楼主可以试试把代码稍微修改成这个样子
    public class sdafasd {
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    int sum = 0, i;
    for (i = 1; i <= 4; i++) {
    switch (i) {
    case 1:
    sum = sum + 2;
    case 2:
    sum = sum + 4;
    continue;
    case 3:
    sum = sum + 16;
    break;
    }
    System.out.println(i); }
    System.out.println(sum);
    }
    }
    你会发现,实际打印出的i只有3和4,其他的都因为遇到continue而跳过了可以看看这篇文章
    http://blog.csdn.net/mal327/article/details/7299870
      

  8.   

    i=1 :
    i<=4 为真  执行 switch   跳到case 1  sum=2; 没有break 继续case 2:  sum=6;  继续case 3 countinue
    i=2:
    i<=4 真      switch     跳case 2   sum=10   继续case 3 continue
    i=3 :
    i<=4 真      switch   跳 case 3 continue
    i=4 :
    i<=4 真     switch   跳case 4  sum =26  break;
    i=5
    i<=4  假  退出for    
      

  9.   

    26,好好看看switch,continue,for循环就明白了
      

  10.   

    知道第一个case没有break.第二个case的continue含义就会做了。
      

  11.   

    break 应该是跳出 switch ,而不是跳出for吧?