Re: [问题] 两层以上的for循环break?

楼主: swpoker (swpoker)   2014-06-29 12:35:28
※ 引述《henry4343 (henry)》之铭言:
: 请问一下两层以上的for循环要break有什么好方法吗?
: 目前的作法是:
: isBreak = fasle;
: for () {
: for () {
: if() {
: isBreak = true;
: break;
: }
: }
: if(isBreak) {
: break;
: }
: }
: 但如果再更多层不就要多一堆boolean判断,原本在obj-c内用goto就没这问题,
: 但java好像没有goto的功能?
: 感谢
我自己参考某本书的作法是
一个循环存在于一个方法
及或搭配参数传值作为使用
例如
:label1:
for(){
:label2
for(){
:label3
for(){
}
}
}
则会有三个方法
boolean label1(Bean bean,List list){
for(l in list){
if( label2(bean,l) ){
return true:
}
}
return false;
}
boolean label2(Bean bean,Object l){
for(o : find(l)){
if(label3(bean,o)){
return true;
}
}
return false;
}
boolean label3(Bean bean,Object o){
if(XXXX(o)){
bean.sss();
return true;
}
return false;
}
goto不建议使用
其实还是因为容易在冗长的循环及判别程式码里面混淆了
我刚学java的时候,还不能理解java文件中说明了虽然有goto label但不建议使用
是后来在维护cobol的时候,才发现goto真的不能乱用
还是乖乖的重构去分离成方法才比较好维护
好用归好用
但是除非只写一次
不然对于维护来说
还是把循环抽离出来或是重新定义流程比较实在
通常来说我都会把这种东西分离成两个议题
1.符合条件的定义
2.当符合条件的处理

Links booklink

Contact Us: admin [ a t ] ucptt.com