for 循环 结合 switch语句的使用(java)

publicclassSwitchtest{inti=0,w=0;publicSwitchtest(){for(;i<=5;i++){switch(i){case3:w+... 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
想知道 具体的思路~谢谢
展开
 我来答
百度网友84c0b02e5
2007-11-15
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
我想你主要问的是这个吧:当执行完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楼上的都说得很清楚了.很容易解决.
百度网友5c10e7b95
推荐于2018-03-30 · 超过38用户采纳过TA的回答
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:115万
展开全部
输出结果没有错
加了测试代码和注释,这样思路就清晰多了
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

参考资料: 自己

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xieliplay
2007-11-15 · TA获得超过473个赞
知道小有建树答主
回答量:375
采纳率:0%
帮助的人:0
展开全部
这是switch语句的一种特性,case语句中如果没有加入break的话会继续执行的,会把下面的所有的case的语句执行完,然后离开switch.除非中间出现break,他会跳出switch,然后执行switch后面的程序。

你这段程序的执行顺序是:
执行case 0
执行case 0中的w += 1;(由于没有break,所以会继续执行下面的case语句)
执行case 1;
执行case 1中的w += 1;
执行continue;(此处出现continue,所以不会执行后面的case语句)
执行case 1;
执行case 1中的w += 1;
执行continue;;(此处出现continue,所以不会执行后面的case语句)
执行case 2
执行case 2中w += 1;
执行case 4
执行case 4中w += 1;
执行case default
执行case default中w += 2;(到此处switch执行完)
执行System.out.println(w is:7)
执行case 3
执行case 3中w += 1;
执行case 0
执行case 0中w += 1;
执行case 1;
执行case 1中w += 1;
执行continue;
执行case 4
执行case 4中w += 1;
执行case default
执行case default中w += 2;(到此处switch执行完)
执行System.out.println(w is:13)
执行case default
执行case default中w += 2;
执行System.out.println(w is:15)
for循环执行完毕,整个程序执行完
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ccm8730
2007-11-15 · TA获得超过254个赞
知道小有建树答主
回答量:533
采纳率:0%
帮助的人:472万
展开全部
没有运行就没有发言权,我运行了,是7 13 15
你应该在没句case 2:w+=1; 后面加 break;
这样就跳到下面去了,如果没有他,就继续执行下面的语句
比如case 3:w+=1;
case 0:w+=1;
如果你给的3 W先是1 执行完后,没有BREAK;就继续执行下面的,W=2;
依次类推
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaofeng_1030
2007-11-15 · 超过24用户采纳过TA的回答
知道答主
回答量:175
采纳率:0%
帮助的人:104万
展开全部
你的输出结果有误吧.怎么只有三个数值.应该还少三个数.
如果是你的现在输入在网上的这个程序我认为你的结果应该为:
6 11 15 22 25 27.不知道你是怎么运行的.怎么会只有三个结果.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式