Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 半环控制_Java_Loops_While Loop_Break - Fatal编程技术网

Java 半环控制

Java 半环控制,java,loops,while-loop,break,Java,Loops,While Loop,Break,我们什么时候使用循环半?此外,是否应该有人简要说明如何编写其代码?您可以使用循环半,以避免代码从循环外重复到循环内。例如: read a; while a != b do stuff; read a; end 变成 while true do read a if a == b then break stuff; end 现在我只在一个地方读了一遍。作为旁白,我想补充一点,变量的范围(假设a在这个习惯用法中是一个局部变量)比另一种情况要小,即a即使在while循环终止后仍然

我们什么时候使用循环半?此外,是否应该有人简要说明如何编写其代码?

您可以使用循环半,以避免代码从循环外重复到循环内。例如:

read a;
while a != b do
  stuff;
  read a;
end
变成

while true do
  read a
  if a == b then break
  stuff;
end

现在我只在一个地方读了一遍。

作为旁白,我想补充一点,变量的范围(假设
a
在这个习惯用法中是一个局部变量)比另一种情况要小,即
a
即使在while循环终止后仍然在范围内。尽可能减少局部变量的范围被认为是良好的实践(Josh Bloch,有效Java,第45项)。

你所说的“循环半”是什么意思?我以前从未听说过这个词。我在谷歌上搜索了“loop and a half”(我也不知道),然后得出了这样的结论:,这解释了它是什么以及我们何时使用它。谷歌是你最好的朋友。好像有人在一个循环中放了一个<代码>破解<代码>,并把它命名为“循环半”。我认为OP是关于半环重复控制中描述的半个问题,这就是书中所写的:[谢谢DasBrink Engult: ])亚力山大:这就是我通常如何编写代码的方法。最好创建一个子代码以避免重复代码。但我确实经常遇到循环半模式。@Alexander不能给a分配新值(在Java中),因此在实际示例中,这可能没有多大帮助,因为人们可能希望访问a。@Voo,-无论如何,这个投票最多的答案甚至不是Java。@stark,这可能是一种趋势。@Alexander是的,改变一个对象的内部状态和给一个变量分配一个新对象之间有很大的区别(是的,我在写这个句子时非常小心)。是的,您可以通过创建包装器对象来绕过限制,但这并不特别好,而且只有在您控制整个堆栈的情况下才有效——否则您还必须编写大量包装器方法,将包装器对象转换为实际方法,然后在返回时更改其状态。