日期:2014-05-17  浏览次数:20720 次

关于判断任意两个组合为空时,执行语句的算法
现在有3个表达式,A,B,C
A=数据库取到的值
B=同上
C=同上
现在要实现
IF(A!=NULL||!A.EQUALS(""))
{
  E.SETPAPER(NEW STRING ["E"])
}
ELSE IF(B!=NULL||!B.EQUALS(""))
{
  E.SETPAPER(NEW STRING ["F"])
}
ELSE IF(C!=NULL||!C.EQUALS(""))
{
  E.SETPAPER(NEW STRING ["H"])
}
ELSE IF((A!=NULL||!A.EQUALS(""))&&(B!=NULL||!B.EQUALS("")))
{
  E.SETPAPER(NEW STRING ["E","F"])
}
.....写完全部组合
A,B,C,AB,AC,BC,ABC
这样7中可能,我知道用IF可以写,但这样太不实际了,如何可能性在增加,根本不能用IF写了,谁给我说下应该怎么写


}

------解决方案--------------------
= =||| 貌似还是有问题啊a!=null||a.equals(""):a不为空或者a等于空
也许应该这样写哈 a!=null && !"".equals(a):a不能为空对象,同时不能为空字符串
好了,不纠结你这个了呵呵,不然楼主要生气了

仔细看下,我之前提供的思路可能考虑不全啊。首先确定楼主要做什么处理,你用了if...else if...的话
只要a不为空,就执行E.SETPAPER(NEW STRING ["E"])方法,后面的就不会执行了。
这样楼主的逻辑就有点错误了哈,如果a为空就执行SETPAPER方法,那么后面判断a与b同时为空就没有必要了。
因为要满足a与b同时为空,自然也满足了单个条件时的a为空或者b为空,所以后面的联合判断就没有意义了。
------解决方案--------------------
楼上说的我自己都头晕了,简单点
if(a){
a kill boss;
}else if(b){
b kill boss;
}else if(a && b){
a and b kill boss;
}
问题出现了,if(a && b)充分条件是if(a) and if(b)
所以在a、b联合杀boss之前,boss肯定被他们其中一人杀了哈,呵呵
------解决方案--------------------
探讨
楼主担心后面组合太多,可以把a,b,c装数组里,循环判断就好,不过要求e,f,h得有某种关系才行,不然只能分开
另外说下楼主是不是写错了啊:如果a不等于空,或者a不等与‘空’

------解决方案--------------------
可以用策略模式封装一下。取出的值放到map里面,然后用到时 根据key 拿到value,还可以配置文件一把。不知楼主明白否。按照这个思路来吧。