Java,switch有500多条case,不想条条都写break,有办法吗?

walkuere 2016-06-22 08:59:30
对的,你没有看错,是500多条
每条case下有或多或少几条语句,不想每次都写break
其实是这样的:
我输入一个数字,比如n=350,那么我就从case 800 case 799 case 798 这些都要按顺序执行的,一直执行到n=350,必须都写case吗,我记得pascal是强制每项都break的。

这个实在不行也就算了,毕竟就是500多句case
...全文
1153 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
全部替换 case 为 break;case
qi7210577 2016-07-13
  • 打赏
  • 举报
回复
我以为,你应该改变一下设计思路,在你设计的方法里面设置两个静态变量,然后递归调用,传入的值和其中一个静态值相同的时候,就调用那个年代的你的历史等等。。。,否则让其中一个静态变量保留一下第二个变量,将第二个静态变量当成参数传入。一次递归试试。。 应该是算法问题
huihuisweet 2016-07-13
  • 打赏
  • 举报
回复
设计模式有问题,不要用case,楼上说用反射机制也是一个方法,结合数据库配置
代码与酒 2016-07-13
  • 打赏
  • 举报
回复
卧槽,吓得我代码碎了一地.....
网络咖啡 2016-07-12
  • 打赏
  • 举报
回复
俺很好奇,你这500多条的case实现的是什么业务逻辑呢?
walkuere 2016-07-09
  • 打赏
  • 举报
回复
引用 19 楼 hemowolf 的回复:
谢谢这位大牛,这个我用不来,我还是多写写break;算了
小灰狼 2016-07-04
  • 打赏
  • 举报
回复
引用 17 楼 walkuere 的回复:
我上面写错了,其实也就是写500多句break; 需求是这样,我想做一个中国古代历史展示的东西,就像KOEI的游戏一样 一开始先做成不能玩,只能看,作为学习课件用,那就是每一年的历史国家、人物的变化,用case某一年的时候,就把这一年的变化改动到游戏地图和人物数据里,并且有个Log日志系统让玩家看,这一年发生了什么事。 因为每一年都是不同的,我都需要手动输入
这样还是设计有问题 游戏的场景比较多吧,但也不是把每个游戏场景硬编到程序里吧,一般是自己定义一个数据结构,然后场景是可编辑的。比如早些年的星际,地图和敌我几方的兵种、起始什么的,都是可编辑的。软件里的程序还是那么几处。 楼主你的程序应该是一部分,而历史、国家、人物变化应该是属于数据的范畴,是要放到数据库里,而不是硬编码在程序里。这些内容的编辑其实是另外一种工作,应该由历史老师或者招个文员MM来做,他们可以完全不懂软件开发。 当然,如果你一定要硬编码,可以尝试使用反射: 假设你的方法写在类 MyImplements 里,有 m001、m002、m003……m800 这些方法,那么代码可以这样写:
int code = ......; // 
MyImplements imp = new MyImplements();
Class<? extends Object> cls = imp.getClass();
java.lang.reflect.Method method = cls.getDeclaredMethod("m" + code);
if(method != null){
    method.invode(imp);
}
gamedev˚ 2016-07-03
  • 打赏
  • 举报
回复
walkuere 2016-07-01
  • 打赏
  • 举报
回复
我上面写错了,其实也就是写500多句break; 需求是这样,我想做一个中国古代历史展示的东西,就像KOEI的游戏一样 一开始先做成不能玩,只能看,作为学习课件用,那就是每一年的历史国家、人物的变化,用case某一年的时候,就把这一年的变化改动到游戏地图和人物数据里,并且有个Log日志系统让玩家看,这一年发生了什么事。 因为每一年都是不同的,我都需要手动输入
绝对在乎妮 2016-06-24
  • 打赏
  • 举报
回复
meadow 2016-06-23
  • 打赏
  • 举报
回复
膜拜,楼主大体是个什么需求,需要这么多case
OPPPPOP 2016-06-23
  • 打赏
  • 举报
回复
感觉 if a < i < b else if c < i < d 这种更适合楼主的需求
  • 打赏
  • 举报
回复
zlkjzxj 2016-06-22
  • 打赏
  • 举报
回复
soton_dolphin 2016-06-22
  • 打赏
  • 举报
回复
这是设计有问题,重新设计
菜 头 2016-06-22
  • 打赏
  • 举报
回复
你这是啥需求呀
livend 2016-06-22
  • 打赏
  • 举报
回复
这样设计是有问题的,你光光个switch语句就好几千行了。。。
qq_15915835 2016-06-22
  • 打赏
  • 举报
回复
肯定是设计问题了。。
bree06 2016-06-22
  • 打赏
  • 举报
回复
我觉得你应该重新理一下设计思路, 除了switch case 肯定可以找到其它方法的. 看一下每个case有没有共同的部分或者相似的功能. 至少目前我还没有见过一个逻辑有500多个分支的.
  • 打赏
  • 举报
回复
选中 case 找到替换,替换成 break; case
加载更多回复(4)

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧