Java中条件仓填充的简化过程

时间:2011-12-20 21:45:22

标签: java algorithm bin-packing

我有一个基于某些条件进行bin打包的算法。我发现算法的流程有点复杂,读者无法理解。

您可以在下面找到开发的Java代码。这段代码有更简化的替代流程吗?

void binpack() {
boolean set=false, cmap=false;
        while(set==false) {
            set=true;
            cmap=false;
            pack[k.cnt]=new bins(k.lim, k.ptim);
            for(int i=0;i<tot;i++) {           
                int s1,s2;
                if(jm[i][1]==0) {
                    s1=jm[i][0]; 
                    set=false;

                    else if(pack[k.cnt].pushk<k.lim) {
                        for(int j=0;j<pack[k.cnt].pushk;j++) {
                            s2=pack[k.cnt].binjm[j][0];
                            for (Iterator<Integer> g= list[s1].iterator(); g.hasNext();) {

    }
}

注意:

ptim - &gt;当前时间

etim - &gt;结束时间

LIM - &GT;限制

2 个答案:

答案 0 :(得分:1)

我头脑中的一些事情:

  1. 变量名称应该更具表现力。请勿缩写,尤其是不要保存一两个字符(例如ptimchk()
  2. 在打开之后和关闭括号之前,之后和之前放置空格等等。这听起来很愚蠢,但你会惊讶于你的代码阅读会更容易。
  3. 避免不必要的布尔比较(例如if ( bool == false )应为if ( !bool )
  4. 避免使用单行ifwhile,使用正确的{}块。
  5. 如果不需要,请不要预先声明变量。
  6. 而不是嵌套循环中的双断结构,break到标签。
  7. 最重要的是:将这些循环中的一些循环到方法中。

答案 1 :(得分:1)

首先:不要为了节省一些打字而缩写变量。这会导致像那样的混淆代码混淆。

其次,您是否已经听说过java.util.Map?