为了账号安全,请及时绑定邮箱和手机立即绑定

你好,求问一下关于for 循环 结合 switch语句的使用,代码如下哦

你好,求问一下关于for 循环 结合 switch语句的使用,代码如下哦

慕田峪9158850 2022-01-06 11:07:33
public class Switchtest{int i=0,w=0;public Switchtest(){for(;i<=5;i++){switch(i){case 3:w+=1;case 0:w+=1;case 1:w+=1;continue;case 2:w+=1;case 4:w+=1;default:w+=2;}System.out.println(" "+w);}}public static void main(String []args){Switchtest stest=new Switchtest();}}运行出来是 7 13 15想知道 具体的思路~谢谢
查看完整描述

3 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

我想你主要问的是这个吧:当执行完switch(0)后,continue,然后本次循环结束,就是说switch(0)也结束了,但是在执行for(i=1)和switch(1)之前为什么没有执行后面的输出语句输出w的值.

要跳出switch语句有两种方法break和switch语句执行完毕。

case中如果没有break的话它就不会跳出switch,continue跳不出switch语句,continue的意思为本次循环结束.
它在这个程序中就是i=0等的结束,而并不是跳出swich语句。所以switch会回到for()找到i的下一个值接着执行.
例如本程序执行完i=0后又找到i=1执行,如果还是没有遇到break或执行完毕的话它就接着找,直到执行完毕或找到break,跳出switch语句,然后再执行后面的输出语句.
最容易进入的误区就是以为遇到continue就认为跳出了switch,然后就开始print.
case楼上的都说得很清楚了.很容易解决.

查看完整回答
反对 回复 2022-01-10
?
当年话下

TA贡献1890条经验 获得超9个赞

没有运行就没有发言权,我运行了,是7 13 15
你应该在没句case 2:w+=1; 后面加 break;
这样就跳到下面去了,如果没有他,就继续执行下面的语句
比如case 3:w+=1;
case 0:w+=1;
如果你给的3 W先是1 执行完后,没有BREAK;就继续执行下面的,W=2;
依次类推

查看完整回答
反对 回复 2022-01-10
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

输出结果没有错
加了测试代码和注释,这样思路就清晰多了
package testcode;

public class Switchtest {
int i = 0, w = 0;//实例变量,作用于整个类

public Switchtest() {//这个为构造函数,创建对象时就自动执行里面的代码
for (; i <= 5; i++) {//初始条件永远为true
switch (i)//把循环后的i作为switch参数,关键在与switch没有break语句,用continue跳转
{
case 3://如果i为3 w 加1,如果匹配到一个以后由于没有break下面的就不再匹配按顺序执行了,以下同样的说明省略
w += 1;
System.out.println("i = "+i+" case 3=" + w);
case 0://如果i为0 w 加1
w += 1;
System.out.println("i = "+i+" case 0=" + w);
case 1://如果i为1 w 加1,并跳出到上级循环,即跳到for外面:
w += 1;
System.out.println("i = "+i+" case 1=" + w);
continue;
case 2://如果i为2 w 加1
w += 1;
System.out.println("i = "+i+" case 2=" + w);
case 4://如果i为4 w 加1
w += 1;
System.out.println("i = "+i+" case 4=" + w);
default://其他情况 w 加2
w += 2;
System.out.println("i = "+i+" case default=" + w);
}
System.out.println("i = "+i+" " + w);//输出w的值
}

}

public static void main(String[] args) {
Switchtest stest = new Switchtest();//创建一个Switchtest对象

}

}
---------------------
输出结果为:
i = 0 case 0=1
i = 0 case 1=2
i = 1 case 1=3
i = 2 case 2=4
i = 2 case 4=5
i = 2 case default=7
i = 2 7
i = 3 case 3=8
i = 3 case 0=9
i = 3 case 1=10
i = 4 case 4=11
i = 4 case default=13
i = 4 13
i = 5 case default=15
i = 5 15



查看完整回答
反对 回复 2022-01-10
  • 3 回答
  • 0 关注
  • 153 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信