一、分析
switch-case语句,如果在每个case语句后面少加了break关键字。程序从该case分支继续执行下一个分支,直到遇见break后或执行完最后一个分支,switch语句执行结束。
二、场景
如此段代码:
public class Client{
public static void main(String[] args){
System.out.println("2 = "+ toChineseNumberCase(2));
}
}
//把阿拉伯数字翻译成中文大写数字
public static String toChineseNumberCase(int n){
String chineseNumber = "";
switch(n){
case 0:
chineseNumber = "零";
case 1:
chineseNumber = "壹";
case 2:
chineseNumber = "贰";
case 3:
chineseNumber = "叁";
case 4:
chineseNumber = "肆";
case 5:
chineseNumber = "伍";
case 6:
chineseNumber = "陆";
case 7:
chineseNumber = "柒";
case 8:
chineseNumber = "捌";
case 9:
chineseNumber = "玖";
}
return chineseNumber;
}
运行结果是:2=玖。由于每个case语句后面稍加了break关键字。程序从”case 2"后面的语句开始执行,直到找到break语句结束,可惜的是我们的程序中没有break语句,于是在程序执行的过程中,chineseNumber的赋值语句会执行多次,从等于"贰"、等于"叁”,一直变到等于"玖",Switch语句执行结束了。于是结果就是如此了。
三、建议
记住在case语句后面随手写上break语句,养成良好的习惯。
对于此类问题,还有一个简单的解决办法:修改Eclipse的警告级别。Performaces->Java->Compiler->Errors/Warnings->Potential Programming->problems,然后修改'switch' case fall-through为Error级别,你如果没有在case语句中加入break,Eclipse会直接报错。
新技术,新未来!欢迎大家关注
“1024工场”微信服务号
,时刻关注我们的最新的技术讯息!
(甭客气!尽情的扫描或者长按!)