首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

java 判断的有关问题

2012-03-24 
java 判断的问题目前有下列一组规则,需要判断是否可用。有4个参数:canReservetrue//是否可用startday//

java 判断的问题
目前有下列一组规则,需要判断是否可用。
有4个参数:
canReserve=true;//是否可用
startday;//入住日期
endday;//离店日期
days;//入住天数
predays//提前入住天数

有一组list数据,对象内容为startdate、enddate、CloseToArrival、CloseToArrival、status、MinLOS、MAXLOS、LeadingTime
比对规则为:
1、状态(Status):“O” 或为空表明可用;“C”关闭或者满房。入住期间,如果该供应商、酒店、房型、价格计划下,有一天出现关房状态C,则该产品不可预订。
2、是否对当天入住关闭(CloseToArrival),“O”生效,“C”或为空不再做该检查。即如果入住日期落在了[STARTDATE,ENDDATE]期间,且该字段为”O”,则该供应商、酒店、房型、价格计划不可预订。
3、是否对当天离店关闭(CloseToArrival),“O”生效,“C” 或为空不做该检查。即如果离店日期落在了[STARTDATE,ENDDATE]期间,且该字段为“O”,则该供应商、酒店、房型、价格计划不可预订。
4、最小入住天数(MinLOS)。当大于0时,表明入住日期在[STARTDATE,ENDDATE]期间时,如果入住天数大于等于该值,才能预订。
5、最大入住天数(MAXLOS)。当大于0时,表明入住日期在[STARTDATE,ENDDATE]期间时,如果入住天数小于等于该值,才能预订。
6、提前预订天数(LeadingTime)。当该字段大于0时,表明入住日期在[STARTDATE,ENDDATE]期间时,如果提前预订天数大于等于该值,才能预订。

我写的java伪代码为:

Java code
for(每一个价格计划){        for(everyday){                if(everyday>=startdate and everyday<=enddate){                    canReserve=true;                    if(Status=="O"){                        canReserve=false;//不能预定                        break;                        canReserve=false;//不能预定                        Break;                    }else{                            //是否对当天入住关闭(CloseToArrival                            if(everyday==startday){                                if(CloseToArrival=='O' and everyday>=startdate and everday<=enddate){                                    canReserve=false;                                    break;                                }                                //最小入住天数                                if(MinLOS>0){                                    if(everyday>=startdate and everday<=enddate){                                        if(days>MinLOS)                                            canReserve=true;                                        else{                                            canReserve=false;                                            break;                                        }                                    }else{                                        canReserve=false;                                        break;                                    }                                }                                //最大入住天数                                if(MAXLOS>0){                                    if(everyday>=startdate and everday<=enddate){                                        if(days<MAXLOS)                                            canReserve=true;                                        else{                                            canReserve=false;                                            break;                                        }                                    }else{                                        canReserve=false;                                        break;                                    }                                }                                //提前预定天数                                if(LeadingTime>0){                                    if(everyday>=startdate and everday<=enddate){                                        if(predays>LeadingTime)                                            canReserve=true;                                        else{                                            canReserve=false;                                            break;                                        }                                    }else{                                        canReserve=false;                                        break;                                    }                                }                            }                            //是否对当天离店关闭(CloseToDeparture                            if(everyday==endday){                                if(CloseToDeparture=='O' and everyday>=startdate and everday<=enddate){                                    canReserve=false;                                    break;                            }                    }                }else{                    canReserve=false;//不能预定                    Continue;                }        }} 


觉得自己写的很啰嗦,请问大侠们,有更好的写法吗?


[解决办法]
嵌套的分支语句太多了。第一个else语句中的第一层if中的内容封装成函数。
[解决办法]
写了这么多,lz你的问题是啥?
[解决办法]
不好意思,没耐心看完。 但是我觉得状态机可以解决这个问题。
随着年龄的增长,不是应该越来越有耐心的嘛。为什么我越来越没有耐心呢。
不好意思,跑题了。
[解决办法]
为什么你不用switch做判断了。

热点排行