我已经用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)
?
break
比较可能是很好的意思,但实际上被误解了。也许您可以在这方面教育您的教授;)以我的经验,教授们对编程技巧并不了解很多。
do {} while (true)
等效于while(true) {}
后者,这是更传统的形式,而且更加清楚。
break
,那么他们应该尝试使用没有它的语言进行编程。不需要太多循环就可以了!