当有更好的循环可用时,为什么我们使用do-while循环?

时间:2014-05-13 16:59:15

标签: java loops do-while

我没有找到do-while循环的任何实际用途。作为一项研究,我们在第一次执行时无法控制do-while循环,并且可以使用do-while循环完成所有操作,可以使用while或for循环(假设)。

我的问题是:是否存在使用do-while循环的情况,或者与for和while循环相比,它提供更可靠结果的任何特定情况?

4 个答案:

答案 0 :(得分:8)

在重复操作之前它非常有用

String input;

...

do
{
    input = getInput();

} while(isValid(input));

要使用其他循环执行此操作,您必须两次编写input = getInput();

答案 1 :(得分:7)

当你总是想要执行至少一次时,

do / while 正好,但你想检查是否继续结束循环而不是在开始。

您可以使用while循环轻松模拟它,但有时代码变得不那么清晰。所有三种循环类型都可以相互模拟,或多或少混乱 - 但由于这三种循环都可用,您应该为手头的工作选择最合适的循环。

我个人使用while循环和do / while循环的频率低于for循环,但有时 a {{1} } / do是最易读的选项。

答案 2 :(得分:3)

不妨说"我没有找到for循环的任何实际用途......所有可以用循环完成的东西,可以用while循环(假设)"。

从技术上讲,你可以用任何其他循环替换任何循环,只要有足够的环形防护等等。有些循环比其他循环更好阅读。

do-while主要是"更好"如果您想至少执行一次 动作,例如要求输入,或获得一些随机值,直到它适合某些约束。您可以通过在"常规"之外执行一次操作来执行此类操作。从那里循环和循环,但它更适合使用do-while

答案 3 :(得分:-2)

如果循环体必须执行至少一次,那么Do-while通常具有更好的性能特征。如果将do-while重构为while / for,则需要对循环退出条件添加额外的评估。

此外,do-while(false)可用作深层嵌套if条件的结构化替代:

do {
   if (!condition1)
       break;
   if (!condition2)
       break;
   if (!conditionN)
       break;
   // do something
} while (false);

而不是:

if (condition1) {
    if (condition2) {
        if (conditionN) {
            // do something
        }
    }
}