2 sinat 33415638 sinat_33415638 于 2016.03.14 10:33 提问

小白求助,求大神帮忙修改下代码

我的条件是condition=1|2|3|4|5....

if (source.getProperty("condition" + NUM).equals("1")) {
        return p.panduan1(readrow, source);
    } else if (source.getProperty("condition" + NUM).equals("2")) {
        return p.panduan2(readrow, source);
    } else if (source.getProperty("condition" + NUM).equals("3")) {
        return p.panduan3(readrow, source);.
        ...

我想返回某几个conditon求且运算后的值,我想把conditon存到数组里
String conditon = source.getProperty("conditon" + NUM);
String[] conditons = conditon.split("\|");

3个回答

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.03.14 11:29

你是想对这段代码进行重构么?JDK1.7支持String类型作为switch分支的值了,可以修正如下:

 String source = source.getProperty("condition" + NUM);
 String result  = null;
 swtich(source){
     case "1":
              result = p.panduan1(readrow, source);
          break;
         case "2":
               result = p.panduan2(readrow, source);
          break;
         case "3":
          result = p.panduan3(readrow, source);
          break;
 }
  return result;

说实话,还是没明白你的第一段代码和第二段代码之间的联系,你的需求能描述清楚些吗?

sinat_33415638
sinat_33415638 比如condition里有1|3 我就把p.panduan1&&p.panduan3返回出来
一年多之前 回复
sinat_33415638
sinat_33415638 我就是想把几个获取到的conditio做且运算返回出来
一年多之前 回复
u013772876
u013772876   2016.03.14 12:00

String conditon = source.getProperty("conditon" + NUM);
String[] conditons = conditon.split("|");
String result = null;
for(String str : conditons){
if(条件1.equals(str)||条件2.equals(str)){
result = p.panduan3(readrow, str);
}
}
return result;

不知道你是不是是这样的意思!

sinat_33415638
sinat_33415638 错了是 panduan2&&panduan4&&panduan6
一年多之前 回复
sinat_33415638
sinat_33415638 有1|2|3|4|5....这样的condition,比如如果是2|4|6的condition数组就返回 panduan2&&panduan3&&panduan6
一年多之前 回复
u013772876
u013772876 需要两个多返回,可以将result 改为map; result .put(readrow, str);
一年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.03.14 12:08

就你的场景,根据1234执行panduanx方法,也就是有一个字符串转换成方法,并且执行,这个情况用反射最简单了,不需要分支条件。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!