java枚举的问题

publicclassTest2{publicenumDogs{collie,harrier};publicstaticvoidmain(String[]args){Do... public class Test2{
public enum Dogs{collie,harrier};
public static void main(String [] args){
Dogs myDog = Dogs.collie;
switch(myDog){
case collie:
System.out.print("collie");
case harrier:
System.out.print("harrier");
}
}
}
为什么这段程序的输出结果是两个case都输出,而不是只输出collie
展开
 我来答
小山山001
2011-07-03 · TA获得超过1159个赞
知道小有建树答主
回答量:1246
采纳率:0%
帮助的人:1266万
展开全部
每个case最后都加个break; 就只输出一个了
case collie:
System.out.print("collie");break;
break肯定要加,因为程序在判断是,只是从一开始判断,不满足条件的,继续往下,一旦满足了,从满足的开始,后面的都不会判断而是直接输出,所以要加break才能输出一个
匿名用户
2012-09-25
展开全部
这个问题和枚举体没有关系,是因为在case语句中缺少了break跳出语句。在上面的程序中,执行完case collin 后没有遇到break跳出,程序会继续往下执行第二个case,所以就输出了两个结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友845f74e61
2011-07-03 · TA获得超过6929个赞
知道大有可为答主
回答量:4050
采纳率:50%
帮助的人:1625万
展开全部
在后在要加上break;
case collie:
System.out.print("collie");
break;

case harrier:
System.out.print("harrier");
break;
追问
...又是你啊,我知道要加break,问题是不加也能编译通过,但和我预想的结果不一样,我想是就输出个collie就好了,因为后面的harrier是不符合case的呀,但结果却两个都输出了,什么原因
追答
这是一个顺序执行啊,执行完了
case collie:
没有break;结束,那就认为还要向下执行,所以执行了。
case harrier:

case只是相当于帮你找到你要执行的开始。并没有约束范围。

整个的范围是switch块啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式