Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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_Conditional Statements - Fatal编程技术网

Java 检查循环内的条件

Java 检查循环内的条件,java,loops,conditional-statements,Java,Loops,Conditional Statements,如果“flag”为真,我必须执行步骤1,否则跳过它。有没有办法跳过循环中不必要的重复检查。(由于循环执行时标志值不变) 它取决于do的范围。如果do始终为真,则无需检查它,并且可以删除If(do)。如果变量始终为true,则没有理由将其设置为true。范围是什么?如果do的值在循环中的任何时候都发生变化,您必须每次检查它,除非您重写代码,以便在当前循环之外处理do==true状态(可能在较小的循环中;这取决于您尝试执行的操作[没有双关语]).我不确定在这个级别上担心优化是否有效。一般来说,更重要

如果“flag”为真,我必须执行步骤1,否则跳过它。有没有办法跳过循环中不必要的重复检查。(由于循环执行时标志值不变)


它取决于
do
的范围。如果
do
始终为真,则无需检查它,并且可以删除
If(do)
。如果变量始终为true,则没有理由将其设置为true。范围是什么?

如果do的值在循环中的任何时候都发生变化,您必须每次检查它,除非您重写代码,以便在当前循环之外处理do==true状态(可能在较小的循环中;这取决于您尝试执行的操作[没有双关语]).

我不确定在这个级别上担心优化是否有效。一般来说,更重要的是让程序工作并继续下一个问题

话虽如此,有一个名为的优化,一些编译器将为您完成。它们复制循环,一次带条件,一次不带条件,并向外移动条件以选择循环。(在您的示例中,您可以使整个循环有条件,但我认为这只是堆栈溢出简化的产物。)

但这只是不必太担心优化的另一个原因,至少在您有了概要文件并且您知道这一代码区域负责可检测的运行时量之前是这样

尽管如此,最好还是尽可能干净地编写代码,并且对这样的问题感到困惑会教给你一些好东西

事实上,循环不变条件也困扰着我。我不相信有一个笼统的答案。有一些涉及高阶函数或lambda的奇特答案,“留给编译器”答案,重构整个外部例程答案。。。我通常会赞成任何使代码看起来更小的东西。你必须按优先顺序来区分

while (man > woman) {

注意此处的无限循环:-)

请参阅所提供的信息。不清楚你想做什么。你能详细说明一下吗?跳过检查的唯一方法是创建两个循环,一个有步骤,一个没有步骤,就像我的家庭作业一样可疑。。。Vishal-你为什么不公布你正在研究的真正问题,以及你对这件事的想法。。。
while (man > woman) {