java 板


LINE

※ 引述《henry4343 (henry)》之铭言: : 请问一下两层以上的for回圈要break有什麽好方法吗? : 目前的作法是: : isBreak = fasle; : for () { : for () { : if() { : isBreak = true; : break; : } : } : if(isBreak) { : break; : } : } : 但如果再更多层不就要多一堆boolean判断,原本在obj-c内用goto就没这问题, : 但java好像没有goto的功能? : 感谢 或许可以把判断直接写进 for () ? for (...; ... && !isBreak; ...) { ... for () { ... } } --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.226.197.13
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/java/M.1402582002.A.47F.html
1F:→ Killercat:那还是会跑完全部第二圈才有机会出来啊.... 06/12 23:40
2F:→ lovdkkkk:第二圈跟原本的一样用 break, 只是把後面的 if 搬上去 @@ 06/13 00:18
3F:→ Killercat:其实前面在想的就是避免这个flag 不过我是觉得都还可以 06/13 12:43
4F:→ longlongint:写成函数直接return吧 06/13 16:24
後来多想了一下, 这种写法只能用在内层 break 後没做任何事立刻重跑外层的情况, 还是用 label 或 return 能真的全停。 其中 label 又有最大的弹性,可以随便跳外面哪一层, return 就只能直接整个停掉。 不过 label 如前面推文说到的并不建议使用, (虽然真的是好用啊...) 而 return... 有另外的问题, 想像一个如原 po 所说更复杂的多层廻圈, 如果中间任何地方都可能 call 个 return 结束, 似乎也不是那麽易读。 一些相关讨论 Good programming habits with return statements [closed] http://ppt.cc/Yy9H Is it bad style to use 'return' to break a for loop in Java? http://ppt.cc/CRDf 或许顺好流程,避免 "更复杂的多层廻圈" 出现才是根本解决之道。
5F:→ JustinHere:filter, map, reduce, flatMap ... 06/16 07:23
当 "多层" 是必需时, 可以努力的就是设法让它不要 "复杂"...XD
6F:→ JustinHere:重构…一次做一件事…xd 06/16 11:57
7F:→ lovelycateye:每层回圈一定代表某见事情,分层抽出去 return 就好 06/16 16:07
嗯嗯,用 return 的话这样也能解一部份, 不过一次要跳出两层 (4 -> 2) 的话还是需要判断式。 "每层回圈一定代表某见事情" 这也是一个重点, 因为假如此句为真, 那照理说中止条件都可以写在 for (...), 最多也只会中途 break 一层, 会需要另外写判断式一次跳掉多层感觉若不是几件事搅在一起, 可能就是一件事拆成几个廻圈, 上面所谓 "顺好流程" 就是要检查这类情况。 前面 Killercat 大大推文提到的 Chain of Responsibility 可能是一个解法, 因为那本身就是要做到 Chain 中的每一环只处理一件事, 至於要怎麽把 for 廻圈转成那样...还要再参详参详 0rz ※ 编辑: lovdkkkk (36.226.197.13), 06/16/2014 19:30:58







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP