【问题标题】:Difference in output between similar while loop and do while loop?类似的while循环和do while循环之间的输出差异?
【发布时间】:2014-09-16 06:01:02
【问题描述】:

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

  1. 将问题 4 中的 while 循环替换为 do while 循环。问题 4 的输出与本问题可能有什么区别?

我找不到输出的差异,可能与否。这是下面两者的代码和输出。

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)

执行循环

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)

【问题讨论】:

  • 为什么不输入一个小于-1 的数字并检查会发生什么?
  • 输入小于-1然后你就会看到差异
  • do-while 循环 run: Input a number: -9 1 BUILD SUCCESSFUL (total time: 2 seconds)
  • @IAmTheWalrus:然后对while 循环执行相同操作,您就有了答案。 Paxdiablo 告诉你原因。
  • while 循环 Input a number: -11 BUILD SUCCESSFUL (total time: 2 seconds)

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


【解决方案1】:

while (condition) {something}do {something} while (condition) 的区别在于后者总是执行至少一次。

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

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

以最简单的形式,你可以看看这两行之间的区别:

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

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

【讨论】:

    【解决方案2】:

    一个 do while 循环将至少执行一次,而一个 while 循环即使不满足其条件也可能不会执行一次。 do while 在第一次迭代后开始检查其条件。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

        因此,如果您输入的是 -1,while 循环将不会打印任何内容(因为 -1

        【讨论】:

          【解决方案5】:

          先测试条件再执行主体

            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)
          

          【讨论】:

            猜你喜欢
            • 2011-04-07
            • 2014-01-11
            • 2015-07-03
            • 1970-01-01
            • 2018-11-02
            • 1970-01-01
            • 2021-11-18
            • 2016-04-01
            • 2015-02-16
            相关资源
            最近更新 更多