各位大神,下午好,请看问题描述:
Java程序需要根据下面表格中的规则计算得到物品编号:
红色 | 黑色 | ||||
高<10 | 20<高<50 | ... | ... | 高>1000 | |
宽<20 | FA | VF | ... | ... | QT |
20<=宽<30 | TA | MF | ... | ... | ZA |
30<=宽<80 | YN | VF | ... | ... | OP |
宽>=80 | UI | SR | ... | ... | OH |
注:表格中的...表示省略的更多规则
现在的写法:
Box box = boxService.getBoxById(10);
String boxCode = "";
if(box.getWidth()<20){
if(box.getColor()=="红色"){
if(box.getHeight()<10){
boxCode = "FA";
}else if(box.getHieght() > 20 && box.getHieght() <50){
boxCode = "VF";
}
//省略...
}else if(box.getColor()=="黑色"){
//省略...
}
}else if(box.getWidth()>=20){
//省略...
}
上述写法需要大量的 if else ,而且如果条件过多,需要写很多代码, 请问有什么方法、工具可以优雅的处理这种问题吗?谢谢。
存在这样的二维表格,虽然不是很规整,但是说明稍加处理是可以查表的。
下面的代表中定义了两个辅助类:
Column
和Row
。核心代码在getCode()
中。整个逻辑可以封装在一个工具类中,getCode 中取 row 和 column 的逻辑可以独立成函数,然后在 getCoe 中用 stream 和 optional 来组合逻辑。