【发布时间】:2011-10-14 14:09:06
【问题描述】:
我已经使用 Java 编程好几年了,但我最近才回到学校获得正式学位。我很惊讶地发现,在我的上一个作业中,我因为使用下面这样的循环而丢了分。
do{
//get some input.
//if the input meets my conditions, break;
//Otherwise ask again.
} while(true)
现在我的测试只是扫描一些控制台输入,但有人告诉我不鼓励这种循环,因为使用break 类似于goto,我们只是不这样做。
我完全理解 goto 和它的 Java 表亲 break:label 的缺陷,并且我有理由不使用它们。我也意识到一个更完整的程序会提供一些其他的逃避方式,例如结束程序,但这不是我的教授引用的原因,所以......
do-while(true) 有什么问题?
【问题讨论】:
-
问问你的老师,那种东西很主观。
-
我发现这篇文章有助于理解what's harmful about goto。与
break的比较可能是好意,但实际上被误解了。也许您可以就此对您的教授进行教育;)根据我的经验,教授对编程技巧知之甚少。 -
我认为唯一真正无可争辩的坏事是,
do {} while (true)等同于while(true) {},而后者是迄今为止更传统的形式,更清晰。跨度> -
如果有人不欣赏
break的简单表达能力,他们应该尝试用没有它的语言进行编程。在你想要它之前不需要太多循环! -
我不同意作业标签。
标签: java while-loop do-while