看板 java 關於我們 聯絡資訊
※ 引述《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.當符合條件的處理 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 163.29.29.131 ※ 文章網址: http://www.ptt.cc/bbs/java/M.1404016531.A.125.html