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;
}
}
}大哥大姐,要怎么理解啊,求详细解答,附注释。
// 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;
}
}
}大哥大姐,要怎么理解啊,求详细解答,附注释。
解决方案 »
- 真心求助,不懂JSP的HR
- double值的问题
- 【switch】java中不支持String,那么是否意味这可以放弃switch?
- 急求一JAVA小程序的答案
- 求助eclipse在building workspace的时候报错
- 菜鸟求教:这种static写法是什么意思
- 如何监听到焦点在单元格之间进行切换。
- ····JAVA学习提问1····多谢高手指教
- 如何使JPanel中的一个继承JPanel的组件的尺寸发生动态改变???
- 出现java.lang.ClassNotFoundException 怎么办?
- java数组越界?
- 关于运行jar文件时,出现noclassfoundexception
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
}
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(...)就很清楚程序是怎么运行的
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; //遇到这个就说明循环结构到头了,马上就要跳出循环了
} }
}
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
}
不可同日而语。
前者i是没有初始化的,后面在使用前必须初始化,否则编译器报错。
当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
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