所有循环(for,while,do while)都可以在java中以彼此的形式表达吗?

时间:2018-04-19 10:39:22

标签: java loops for-loop while-loop do-while

据我所知,我们可以以while循环的形式表达do while循环,以for循环的形式表示while循环。所以可以进行以下转换(如果我错了,请纠正我):

For - >而

while - >对于

Do-While - >而

Do-While - >对于

但是我不确定我是否可以转换while循环,而while循环并不一定只运行一次。有没有办法将while循环转换为do-while?

2 个答案:

答案 0 :(得分:2)

你可以轻松地去做。例如,首先只需将布尔值设置为true,并在循环条件中,执行" condition OR boolean"。然后在循环中,将布尔值设置为false。这可能是一种方法:

boolean condition = true;
while (condition) {
  condition = doThings();
}

它可能不是最好的,但只有添加一个布尔变量才能完美运行。 编辑:我的坏,我纠正了我的答案。现在它真的是一个do-while循环。

我做了另一个答案,这对我来说更清楚,我认为这取决于你的喜好。这是:

boolean bool = true;
while (yourCondition || bool) {
   if (bool) {bool = false;}
}

为了你的好奇心,我发现(通常我认为)编译器会将所有类型的循环转换为只有一种。所以所有循环都是等价的,你只需要找到一种方法来做到这一点:)。

答案 1 :(得分:2)

假设您有一个界面

interface LoopInfo {
    Runnable init();
    BooleanSupplier goOn();
    Runnable next();
}

具有给定的实例化

LoopInfo myInfo;

然后这是一个for - 循环

for (myInfo.init().run(); myInfo.goOn(); myInfo.next().run()) {
    // loop code
}

等效的while-do循环

myInfo.init().run();
while (myInfo.goOn()) {
    // loop code
    myInfo.next().run();
}

和等效的do-while循环

myInfo.init().run();
do {
    if (myInfo.goOn()) {
        // loop code
    }
    myInfo.next().run();
} while (myInfo.goOn());

所以是的,它们可以在彼此之间进行等效转移。