类似while循环和while循环之间的输出差异?

时间:2014-09-16 06:01:02

标签: java loops while-loop compare do-while

对于我的Java类,我被要求创建一个while循环,然后将其转换为do-while循环,然后比较输出。这是个问题:

  
      
  1. 使用do while循环替换问题4中的while循环。问题4的输出与这个问题之间可能存在什么差异?
  2.   

我无法找到输出上的差异,可能与否。以下是两者的代码和输出。

while循环

package fordemo;
import java.util.Scanner;

public class ForDemo {


public static void main(String[] args) {

    System.out.println("Input a number:");
    Scanner user_input = new Scanner (System.in);
    int number = user_input.nextInt();
    int n = -1;
    while (n < number){
        n=n+2;
        System.out.print(n + " ");

    }
  }
}

运行:

Input a number:
15
1 3 5 7 9 11 13 15 BUILD SUCCESSFUL (total time: 1 second)

do-while循环

package fordemo;
import java.util.Scanner;

public class ForDemo {


public static void main(String[] args) {

    Scanner user_input = new Scanner (System.in);
    System.out.println("Input a number:");
    int number = user_input.nextInt();
    int n = -1; 
    do {
        n+=2;
        System.out.print(n + " ");
    }
    while (n < number);            

  }
}

运行:

Input a number:
11
1 3 5 7 9 11 BUILD SUCCESSFUL (total time: 1 second)

5 个答案:

答案 0 :(得分:5)

while (condition) {something}do {something} while (condition)之间的区别在于后者始终至少执行一次

前者在迭代之前检查条件,后者在之后检查它

如果您输入-1或更少,前者将不会给您任何东西,而后者会给您1

在最简单的形式中,您可以看看两行之间的区别:

while (false) { System.out.println("x"); }
do { System.out.println("x"); } while (false);

前者抱怨无法访问的代码,因为它永远不会进入循环。后者不会抱怨,因为它会循环一次。

答案 1 :(得分:1)

do while循环将至少执行一次,而while循环甚至可能在其条件不满足时甚至不执行一次。 do while在第一次迭代后开始检查其状态。

答案 2 :(得分:0)

当特定条件为真时,while语句会不断执行一个语句块。 do-while和while之间的区别在于do-while在循环的底部而不是顶部计算它的表达式。因此,在您的情况下,如果您输入的值较少,则-1 while loop将执行0次,而do-while循环将执行1 times

答案 3 :(得分:0)

第一次运行while循环时,n设置为-1,然后检查是否为n

在do-while循环中,你的代码将n设置为-1,然后将其提升为2.打印该行,然后检查是否为n

因此,如果输入为-1,则while循环不会打印任何内容(因为-1&lt; -1计算结果为false)。但你的do-while循环将打印1

答案 4 :(得分:0)

首先测试条件然后执行正文

  while (n < number){   // Top tested loop or (pre test loop)
            n=n+2;
            System.out.print(n + " ");

        }

首先执行循环体,然后测试条件;

do {
        n+=2;
        System.out.print(n + " ");
    }
    while (n < number);   // Bottom tested loop (post test loop)