同时和比较

时间:2013-11-18 09:57:53

标签: java loops while-loop do-while

做-而:

do
{ 
    i++; 
    ++j;
    System.out.println( i * j );

}
while ((i < 10) && (j*j != 25));

我正在学习do-while vs,而且想要使用while重写上面的java片段(已经声明和初始化)。以下重写代码是否正确:

,同时:

while ((i < 10) && (j*j != 25))
{
    i++;  
    ++j;
    System.out.println( i * j );
}

干杯

4 个答案:

答案 0 :(得分:13)

比较完成后,do-whilewhile之间的差异 。使用do-while,您将在最后进行比较,因此至少进行一次迭代。

您的示例的等效代码

do
{ 
    i++; 
    ++j;
    System.out.println( i * j );

}
while ((i < 10) && (j*j != 25));

相当于:

i++; 
++j;
System.out.println( i * j );
while ((i < 10) && (j*j != 25)) {
    i++; 
    ++j;
    System.out.println( i * j );
}

一般理解

do-while循环是一个退出控制循环,这意味着它在结束时退出。 while循环是条目控制循环,这意味着条件在开始时进行测试,因此循环内的代码甚至可能都不会被执行。

do {
    <block>
} while (<condition>);

相当于:

<block>
while (<condition>) {
    <block>
};

用例

do-while的典型用例如下:您询问用户某些内容,并且您希望在输入不正确时重复操作。

do {
   // Ask something
} while (input is not correct);

在这种情况下,你想要至少询问一次,它通常比使用while更优雅,这需要复制代码,或添加额外条件或设置任意值以强制进入第一次循环。

相反,while循环更多公共,可以轻松替换do-while(并非所有语言都有循环)。

答案 1 :(得分:3)

do-whilewhile之间的关键区别,do-while保证您在检查前至少运行一次代码。

* 它不需要变得复杂。

答案 2 :(得分:2)

不,这两个代码不相同。 do-while仅检查循环结束时的条件,因此i++++jSystem.out.println(i * j)至少发生一次,无论i和{的初始值如何{1}}。如果第一次输入循环时条件不是j,则while会跳过整个循环。

例如,你可以通过在循环之前复制一次循环体来与true达到相同的效果。

答案 3 :(得分:0)

Do-While循环对于这样的情况非常有用,在这种情况下,您向用户询问问题,并且用户必须回答该程序才能终止。 例如,此代码:

import java.util.Scanner;

public class DoWhile {

    public static void main(String[] args) {
        int answer;
        do {
            System.out.println("What is 5+5?");
            Scanner scan = new Scanner(System.in);
            answer = scan.nextInt();
        } while (answer != 10);
    }
}