你胆敢在case后面不加break试试?

举报
穆雄雄 发表于 2022/12/13 22:00:40 2022/12/13
【摘要】 我们经常在实际开发中会用到一些转换类,比如在金融界中,我们需要将1转换为“壹”,2转换成“贰”。还有类似这样的需求,食堂在一周内每天的菜单都是不一样的,周一为鱼香肉丝+鸡腿,周二为爆炒土豆丝+鲅鱼,周三为西红柿炒鸡蛋+牛肉片等等,我们可以用代码来模拟一下阿拉伯数字转换为“中国式”数字的需求://java实现将阿拉伯数字转换成中国式数字 public static void testCast...

我们经常在实际开发中会用到一些转换类,比如在金融界中,我们需要将1转换为“壹”,2转换成“贰”。还有类似这样的需求,食堂在一周内每天的菜单都是不一样的,周一为鱼香肉丝+鸡腿,周二为爆炒土豆丝+鲅鱼,周三为西红柿炒鸡蛋+牛肉片等等,我们可以用代码来模拟一下阿拉伯数字转换为“中国式”数字的需求:

//java实现将阿拉伯数字转换成中国式数字
  public static void testCastNum(){
    int num = 2;
    String chinaNum = "";
    switch (num) {
    case 1:
      chinaNum = "壹";
    case 2:
      chinaNum = "贰";
    case 3:
      chinaNum = "叁";
    case 4:
      chinaNum = "肆";
    case 5:
      chinaNum = "伍";
    case 6:
      chinaNum = "陆";
    case 7:
      chinaNum = "柒";
    case 8:
      chinaNum = "捌";
    case 9:
      chinaNum = "玖";
    }
    System.out.println(chinaNum);
  }

这是一个简单的不能在简单的案例,大家一看就明白,那我们运行一下,发现结果输出的是 “玖” ,为什么?

我们回来在看看程序,哦,原来是case后面忘记加break了,程序从case2执行完之后继续执行,chinaNum的值从“贰”、“叁”、“肆”一直到“玖”才结束,因为在switch中,自始至终都未发现break,所以就一直执行。

有人可能会质疑,这样的小儿科我是不可能烦的,错误太简单了,我只能说,你参与过的并没有太复杂,在大点的项目中蹲过坑、打过仗的兄弟们都知道,switch中经常会遇到一堆case语句,又和别的业务嵌套在一起,你说落一个break正常不,最正常不过了。

下面的小卡片点一点就是对我的最大的支持了,感谢您的支持,点一下即可,谢过主上!

那么我们应该如何防止这样的看似低级小儿科的实则又常犯的错误呢?

修改编辑器的警告级别,比我在myeclipse或者eclipse中,一次点击windows–>preferences–>java–>Compiler–>Errors/Warnings–>Potential programming problems–>”’switch’ case fall-througn”,

​编辑

将后面的错误级别修改为Error,你胆敢在case后面不加break试试?我就直接给你报红色叉号,别说运行了,编译都不让你通过!!!

​编辑

当然,你也可以改其他的错误级别,自己改的试试哦~

文章参考:《编写高质量代码改善java程序的151个建议》

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。