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 检查do while循环中条件的有效方法?_Java_Loops_If Statement_While Loop_Do While - Fatal编程技术网

Java 检查do while循环中条件的有效方法?

Java 检查do while循环中条件的有效方法?,java,loops,if-statement,while-loop,do-while,Java,Loops,If Statement,While Loop,Do While,我使用的是Do-While循环,但我必须测试在循环的中途是否满足该条件,以便在满足该条件时跳过该部分。有没有一种有效的方法 e、 g.我现在有这样的东西: do { method1; if (!condition) method2; } while (!condition); prepare_for_loop_entering do { method2 method1; } while (!condition); 编辑:对不起,我想我一开始并没有

我使用的是Do-While循环,但我必须测试在循环的中途是否满足该条件,以便在满足该条件时跳过该部分。有没有一种有效的方法

e、 g.我现在有这样的东西:

do {
    method1;
    if (!condition) 
        method2;
} while (!condition);
prepare_for_loop_entering
do {
   method2
   method1;
} while (!condition);

编辑:对不起,我想我一开始并没有说清楚。条件开始时为false,在循环过程中的某个点,其中一个方法会将(全局)“条件”设置为true,在该点我希望循环立即结束。我只是觉得测试循环的结束条件是件麻烦的事,我想知道我是否遗漏了任何明显的东西。

如果
条件在所有引用它的地方都是一样的

do {
    method1;
    method2;
} while (!condition);

在while循环中,
条件将始终为false(
!条件将为true),除非在
方法1中将其设置为true比你可以只
中断method1中将其设置为true时

下面的代码如何:

if(condition)
break;
那么这个呢:

 while (!condition) {
   method1;
if(!condition)
   method2;
}
method1;
while (!condition) {
   method2;
   method1;
}
这个怎么样:

 while (!condition) {
   method1;
if(!condition)
   method2;
}
method1;
while (!condition) {
   method2;
   method1;
}

请提供有关方法的更多信息。如果可以从method1/2返回条件,请尝试:

do {
    method1;
} while (!condition && !method2)
或者,如果您通过引用传递,并且方法返回始终为true:

while (method1 && !condition && method2 && !condition);
或:

编辑:如果:


这几乎不取决于你将要做什么。

我认为你正在寻找的是避免这种额外的效率测试,因为“条件”在大多数情况下都不满足(很多情况下只有1个)。。。 这种优化可以通过深入研究method1和method2(或他们正在处理的数据)中的实际操作来完成,并在循环之外添加第一个“假步骤”,这将仅在第一次禁用method2的处理。看起来是这样的:

do {
    method1;
    if (!condition) 
        method2;
} while (!condition);
prepare_for_loop_entering
do {
   method2
   method1;
} while (!condition);

使用最通用的循环形式:

while (true)
{
    method1;
    if (!condition) break; 
    method2;
} 
进一步解释

带有条件“condition”的while循环完全类似于:

while (true)
{
    if (condition) break;
    method1;
    method2;
}
while (true)
{
    method1;
    method2;
    if (condition) break;
}
做一段时间就像:

while (true)
{
    if (condition) break;
    method1;
    method2;
}
while (true)
{
    method1;
    method2;
    if (condition) break;
}

我们不需要这两个,因此上面的代码是这样的。

问题出在哪里?我假设您想离开while循环
if!条件< /代码>即使在循环的中间吗?是的,这就是我想要做的,但是从我可以看到的,因为循环是如此简单,加上一个“Stand”;它会使它变得更复杂,因为我仍然需要两次测试这个条件。绕过循环进入下一个循环更好。@brent不幸的是,我认为在Java中没有一种干净的方法可以做到这一点。重复的
if
可能是你最好的选择。如果他在
method1
中将
条件设置为true,会怎么样<代码>方法2
仍将被访问该想法在第一种方法或第二种方法中,最终将在循环中的某个时间将条件设置为true。如果第一个方法将其设置为true,我不想执行第二个方法,但是这两个方法必须循环,直到发生。啊,是的,谢谢。在这种情况下,我是使用while,还是执行while循环并不重要,因为条件在开始时总是错误的。代码仍然重复代码中的“!condition”部分,我认为这有点混乱,但这似乎是一个不可避免的问题。无论如何谢谢你!这是一种可能性,但如果我理解正确,它只会添加一行代码?如果代码在图片中只有一个条件,那么它
method2
应该在循环之外。是的,额外的代码不会花费你任何东西。所以没有其他选择吗?在方法1或方法2中,可以在循环过程中随时将条件设置为true。我需要休息一下;但是由于循环的简单性,它实际上与我的方法几乎相同,如果不是更好的话。但它看起来很混乱,我在这里发了帖子,想知道是否有更好的方法——但看起来不像。我认为没有。抱歉。这与我最初的做法类似,但如果method2将条件设置为true,则程序将无法正常运行。谢谢,这与Vikdor提出的解决方法类似。正如我在那里提到的,我一开始确实有类似的代码。循环中的条件测试是每次迭代都要做的事情,虽然这样做不会解决问题。这看起来是最好的方法。因为看起来没有任何有效的方法来改进我的方法,所以我将使这些方法返回一个布尔值,并且与第三个代码段中的方法类似。非常感谢。返回布尔值的方法将导致灾难,因为若方法返回错误的值,则循环将永远运行。只要保持代码简单就行了。