一、分析
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会直接报错。