论坛首页 综合技术论坛

对逻辑分支迭代结构扯淡下。

浏览 1726 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-03-05   最后修改:2010-03-05
java刚入门,对其他的编程语言都不了解。

对编程语言不够熟悉,也无法精确表述是什么问题。

或许我表述的问题,已经被研究讨论过了,很少存在需要这样考虑逻辑,无伤大雅;或许应经被java或其他语言解决了,我还不知道;或许大部分人都知道怎么更好的解决了。如是这样,请点隐藏或新手,走人或更好的做法是告诉我和其他不明事实真相的群众该怎么做。

大家有没有这样同感,当有几个独立的逻辑,交叉一起判断的时候,逻辑分支的编写会变得很冗余。

不标准的伪代码,a、b、c在那些数字的取值范围内(就考虑0,1,2吧):
int a in(0,1,2...);
int b in(0,1,2...);
int c in(0,1,2...);

写逻辑的时候你会这样写:
if(a==0){
 if(b==0){
  if(c=0=){
   ...
  }else if(c==1){
   ...
  }else{
   ...
  }
 }else if(b==1){
  if(c==0){
   ...
  }else if(c==1){
   ...
  }else{
   ...
  }
 }else{
  if(c==0){
   ...
  }else if(c==1){
   ...
  }else{
   ...
  }
 }
}else if(a==1){
 if(b==0){
  if(c==0){
   ...
  }else if(c==1){
   ...
  }else{
   ...
  }
 }... ...
}else{
 ... ...
}

或者
if(a==0&&b==0&&c==0){
 ...
}else if(a==0&&b==0&&c==1){
 ...
}else if(a==0&&b==0&&c==2){
 ...
}else if(a==0&&b==1&&c==0){
 ...
}else if(a==0&&b==1&&c==1){
 ...
}else if(a==0&&b==1&&c==2){
 ...
}... ...


抛石子引玉:
定义这样几个布尔数组,保证有且仅有一个是true,对它们迭代(或者是什么):
int a in(0,1,2...);
int b in(0,1,2...);
int c in(0,1,2...);
boolean baa={a==0,a==1,a==2};
boolean bab={b==0,b==1,b==2};
boolean bac={c==0,c==1,c==2};

有那么一种强大的itr迭代(迭代数组,却没有共同的循环结构,只是实现分支,或叫分支更合适),有我幻想的结构。
itr(baa,bab,bac){
 ...;  //if(baa[0]&&bab[0]&&bac[0])
 ...;  //if(baa[0]&&bab[0]&&bac[1])
 ...;  //if(baa[0]&&bab[0]&&bac[2])
 ...;  //if(baa[0]&&bab[1]&&bac[0])
 ...;  //if(baa[0]&&bab[1]&&bac[1])
 ...;  //if(baa[0]&&bab[1]&&bac[2])
 ... ...
}

迭代达到注释中判断的效果,“...;”可以是个处理语句,或者一个“{}”包裹起来的语句块。

这么做是不是更简洁?虽然可能写着写着漏掉或弄混逻辑。


独立的逻辑还好想,稍微有点交叉的逻辑限于自己的启蒙程度还无法想象。



-----------------------------------我从来不掩饰自己的无知
   发表时间:2010-03-16   最后修改:2010-03-16
enum结构....
可以作到这种事

0 请登录后投票
   发表时间:2010-03-16  
抛出异常的爱 写道
enum结构....
可以作到这种事



哦,对enum不太了解,我去看看
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics