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

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])
... ...
}

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

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


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


-----------------------------------我从来不掩饰自己的无知
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值