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 展开
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 展开
3个回答
2012-09-25
展开全部
这个问题和枚举体没有关系,是因为在case语句中缺少了break跳出语句。在上面的程序中,执行完case collin 后没有遇到break跳出,程序会继续往下执行第二个case,所以就输出了两个结果。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在后在要加上break;
case collie:
System.out.print("collie");
break;
case harrier:
System.out.print("harrier");
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块啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询