建议15:break万万不可忘
1 public class Client { 2 public static void main(String[] args) { 3 System.out.println("2 = "+toChineseNumberCase(2)); 4 } 5 6 //把阿拉伯数字翻译成中文大写数字 7 public static String toChineseNumberCase(int n) { 8 String chineseNumber = ""; 9 switch (n) { 10 case 0:chineseNumber = "零"; 11 break; 12 case 1:chineseNumber = "壹"; 13 case 2:chineseNumber = "贰"; 14 case 3:chineseNumber = "叁"; 15 case 4:chineseNumber = "肆"; 16 case 5:chineseNumber = "伍"; 17 case 6:chineseNumber = "陆"; 18 case 7:chineseNumber = "柒"; 19 case 8:chineseNumber = "捌"; 20 case 9:chineseNumber = "玖"; 21 } 22 return chineseNumber; 23 } 24 }
此类问题发生得非常频繁,但也很容易发现,只要做一下单元测试(Unit Test),问题立刻就会被发现并解决掉,但如果是在一堆的case语句中,其中某一条漏掉了break关键字,特别是在单元测试覆盖率不够高的时候(为什么不够高?在大点的项目中蹲过坑、打过仗的兄弟们可能都知道,项目质量是与项目工期息息相关的,而项目工期往往不是由项目人员决定的,所以如果一个项目 的单元测试覆盖率能够达到60%,你就可以笑了),也就是说分支条件可能覆盖不到的时候,那就会在生产中出现大事故了。
记住在case语 句后面随手写上break,养成良好的习惯。
对于此类问题,还有一个最简单的解决办法:修改IDE的警告级别,例如在Eclipse中,可以依次点击 Performaces→Java→Compiler→Errors/Warnings→Potential Programming problems,然后修改‘switch’case fall-through为Errors级别,如果你胆敢不在case语句中加入break,那Eclipse直接就报个红叉给你看,这样就可以完全避免 该问题的发生了。