所有循环(for、while、do-while)都可以用java表示吗?

所有循环(for、while、do-while)都可以用java表示吗?,java,loops,for-loop,while-loop,do-while,Java,Loops,For Loop,While Loop,Do While,我知道我们可以用while循环的形式表示do-while循环,用for循环的形式表示while循环。因此,如果我错了,可以进行以下转换: 暂时 While->For 边做边做->边做 待命->待命 但我不确定是否可以将while循环转换为do while,因为while循环不一定至少运行一次。有没有办法将while循环转换为dowhile?您可以轻松地从while转换为dowhile。例如,首先只需将布尔值集添加为true,然后在循环条件中,执行like条件或boolean。然后在循环中,将布尔

我知道我们可以用while循环的形式表示do-while循环,用for循环的形式表示while循环。因此,如果我错了,可以进行以下转换:

暂时

While->For

边做边做->边做

待命->待命


但我不确定是否可以将while循环转换为do while,因为while循环不一定至少运行一次。有没有办法将while循环转换为dowhile?

您可以轻松地从while转换为dowhile。例如,首先只需将布尔值集添加为true,然后在循环条件中,执行like条件或boolean。然后在循环中,将布尔值设置为false。以下是一种方法:

boolean condition = true;
while (condition) {
  condition = doThings();
}
这可能不是最好的方法,但它只有在添加布尔变量的情况下才能完美工作。 编辑:我的错,我更正了我的答案。现在它实际上是一个do-while循环

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

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

出于好奇,我认为编译器经常会将所有类型的循环转换为一个循环。所以所有的循环都是等价的,您只需要找到一种方法来做到这一点:。

假设您有一个接口

interface LoopInfo {
    Runnable init();
    BooleanSupplier goOn();
    Runnable next();
}
使用给定的实例化

LoopInfo myInfo;
这是一个for循环

等效whiledo循环

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());

是的,它们可以在彼此之间等价地传输。

有没有办法将while循环转换为do while?=>在进入do-while之前用if保护它。是的,除了Item:iterable的for-each循环之外,其他所有循环都可以使用if。我简化了一点。所以你至少要做一次这样的事。如果返回true,则继续执行,直到返回false。那是我的错哦抱歉我不明白你改变了我的答案。。。我不确定是否理解您所做的更改,但无论如何^^如果您对我的编辑不满意,请删除它。我认为支持你会比提出我自己的答案更好,因为我觉得不太舒服,所以我补充道,我们的答案都有:
myInfo.init().run();
do {
    if (myInfo.goOn()) {
        // loop code
    }
    myInfo.next().run();
} while (myInfo.goOn());