6

if(a)
{
    do
    {
        b();
    }
    while(a);
}

完全一样

while(a)
{
    b();
}

?

4

5 回答 5

1

它们是相同的,我将提供一个示例,您可能实际上想要使用“Do-While”而不是 while 循环。

do{
    x = superMathClass.performComplicatedCalculation(3.14);
}
while (x < 1000);

x = superMathClass.performComplicatedCalculation(3.14);
while ( x < 1000);
{
      x = superMathClass.performComplicatedCalculation(3.14);
}

使用 Do-While 的论据如上所示。假设该行x = superMathClass.performComplicatedCalculation(3.14); 不只是一行代码,而是 25 行代码。如果您需要更改它,在执行过程中您只需更改一次。在 while 循环中,您必须更改它两次。

我确实同意休息时间,你应该避免他们,但也有对他们有利的论点。

于 2012-06-22T20:49:41.927 回答
1

是的,它们是一样的。
您创建了一种非常难以理解的方式来while使用do-whileloop +模拟循环if

您应该阅读以下内容:
测试循环在顶部还是底部?(同时与做同时)

如果您想在循环的第一次迭代之前测试条件,请使用while循环。

如果您想在运行循环的第一次迭代后测试条件,请使用do-while循环。

于 2012-06-19T13:49:41.663 回答
1

是的,它们是等价的。
如果afalseb则根本不会执行。
如果atrueb将执行直到a成为false
这对于两种构造同样适用。

于 2012-06-19T13:51:45.643 回答
1

在这种情况下,这些结构几乎可以互换,但我认为 if do while 循环在某些情况下很有用,例如,如果某些变量需要在循环的所有迭代中保留,但如果循环从未执行则不需要. (并且假设它可能不是。)例如

        if (condition) {
            LargeComplexObject object = new LargeComplexObject();
            do {
                some action
                ...
                object.someMethod();
                ...
                more actions
            }
            while (condition);
        }

如果该对象的初始化是时间或内存密集型的,这可能是一个有用的优化,并且预计此循环只会偶尔触发,并且会在相关方法的大多数执行中被跳过。当然,在其他情况下它也可能有用,基本上我认为如果在循环开始之前应该执行一些事情,那么应该使用 if-do-while,只有当你进入循环时。

于 2014-07-17T02:00:11.500 回答
0

的,但你应该更喜欢后者。

于 2012-06-19T13:49:40.133 回答