据我所知,我们可以以while循环的形式表达do while循环,以for循环的形式表示while循环。所以可以进行以下转换(如果我错了,请纠正我):
For - >而
while - >对于
Do-While - >而
Do-While - >对于
但是我不确定我是否可以转换while循环,而while循环并不一定只运行一次。有没有办法将while循环转换为do-while?
答案 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());
所以是的,它们可以在彼此之间进行等效转移。