在Java中,何时“do while”循环是唯一的选择?

时间:2013-09-06 15:08:45

标签: java while-loop do-while

是否存在必须使用do while循环的情况?这是一种公认​​的做法吗?看起来它等同于普通的while循环,除了它在检查条件之前发生它的第一次迭代,如果它是真的。

int i = 3;
while ( i > 0 ) {  // runs 3 times
    i--;
}

VS

int j = 3;
do {
    j --;
} while ( j > 0 ); // runs 3 times

同样的?

编辑:我见过java doc,但是 java docs中的示例看起来并不要求do while循环中的特定例程必须在do while循环中运行,而不是在while循环中运行!

6 个答案:

答案 0 :(得分:7)

  

是否存在必须使用do while循环的情况?

否:每个do - while循环可以写入while - 循环,方法是在循环开始之前运行一次。但是,肯定有使用do - while构造更有意义的情况(即如果你总是希望循环至少迭代一次),这就是为什么它首先存在的原因

  

这是一种公认​​的做法吗?

如果你恰当地使用它,那么绝对是。

  

它似乎等同于一个简单的while循环,除了它在检查条件之前发生它的第一次迭代,如果它甚至是真的。

没错。您可以在tutorial

中详细了解do - while

答案 1 :(得分:2)

这个例子可能会帮助你更清楚:

int i = 3;

System.out.print("while:    ");
while (--i > 0){
    System.out.print("x");
}

System.out.print("\ndo-while: ");

int j = 3;
do
{
    System.out.print("x");
}while (--j > 0);

打印

while:    xx
do-while: xxx

答案 2 :(得分:1)

一个实时的例子。     有一个5级的比赛。     在每个级别,如果你得分100,你可以进入下一级别。     做的代码较少,但暂时没有。

boolean playContest()
{//do while
    int level = 1;
    int score;
    do
    {
        score = 0;
        score = play();
    }while(score>99 && level++<6)
    if(level>4 && score>99)
        isWinner = true;
    else
        isWinner = false;
    return isWinner;
}

boolean playContest()
{//while
    int level = 1;
    int score;
    while(level <6)
    {
        score = 0;
        score = play();
        if(score < 100)
            break;
        level++;
    }
    if(level>4 && score>99)
        isWinner = true;
    else
        isWinner = false;
    return isWinner;
}

答案 3 :(得分:1)

whiledo-while之间的基本区别是,至少执行一次。

do-while是最佳选择吗?

如果您想要执行某些操作直到遇到条件,当然您可以通过使用while来实现相同的功能,但是使用break提前终止循环,这是令人讨厌且丑陋的解决方案

答案 4 :(得分:0)

如果你想在内部执行do语句至少一次,那么你可以去实现它。

Directly from Docs

  

do-while和while之间的区别在于do-while在循环的底部而不是顶部计算它的表达式。因此,do块中的语句总是至少执行一次,

do {
     statement(s)
} while (expression);

答案 5 :(得分:0)

不,没有时间do-while循环是唯一的选择,当你不想重复代码时,它是为了方便使用。