2

有没有必须使用do while循环的情况?这是公认的做法吗?看起来它相当于一个普通while循环,只是它的第一次迭代发生在检查条件之前,如果那是真的。

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

对比

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

相同?

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

4

6 回答 6

9

有没有必须使用do while循环的情况?

否:每个do-while循环while可以通过在循环开始之前运行一次主体来编写为- 循环。do但是,在某些情况下,使用-结构肯定更有意义while(即,如果您总是希望循环至少迭代一次),这就是它首先存在的原因。

这是公认的做法吗?

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

看起来它相当于一个普通while循环,只是它的第一次迭代发生在检查条件之前,如果那是真的。

这是正确的。您可以在其教程中阅读更多关于do-的内容。while

于 2013-09-06T15:14:07.327 回答
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
于 2013-09-06T15:21:31.773 回答
1

while和do while之间的基本区别do-while将至少执行一次。

什么时候do-while是最好的选择?

如果您想执行某些操作直到满足条件,当然您可以通过使用while但提前终止循环来实现同样的事情,这是令人讨厌和丑陋的解决方案

于 2014-06-09T18:14:27.163 回答
1

一个实时的例子。有一个5级的比赛。在每个级别中,如果您获得 100 分,您就可以进入下一个级别。do while 的代码更少,但不是 for while。

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;
}
于 2013-09-06T15:46:58.527 回答
0

When you want to execute the statement inside do for at least once, then you can go for it.

Directly from Docs

The difference between do-while and while is that do-while evaluates its expression at the bottom of the loop instead of the top. Therefore, the statements within the do block are always executed at least once,

do {
     statement(s)
} while (expression);
于 2013-09-06T15:10:54.110 回答
0

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

于 2013-09-06T15:15:15.073 回答