杰瑞科技汇

do while循环和while循环有何区别?

(SEO优化):

Java Do While循环完全指南:从入门到精通,附实例代码详解

do while循环和while循环有何区别?-图1
(图片来源网络,侵删)

Meta描述(SEO优化):

深入浅出地讲解Java Do While循环的语法、工作原理、使用场景与注意事项,通过丰富的代码示例和对比,让你彻底掌握这个“先执行,后判断”的循环结构,提升编程实战能力。


引言:为什么你需要理解Do While循环?

在Java编程的世界里,循环是让程序“动”起来的核心魔法之一,我们熟知的for循环和while循环,都是先判断条件,再决定是否执行循环体,但你是否遇到过这样的场景:无论条件是否满足,都至少需要执行一次代码

一个简单的菜单系统,无论用户第一次输入是否合法,我们都必须先展示一次菜单,这时,do while循环就派上了用场,它就像一个“特立独行”的伙伴,遵循着“先行动,后思考”的原则,本文将带你全面、深入地剖析Java中的do while循环,让你不仅会用,更能理解其精髓。


Do While循环的核心语法

do while循环的结构非常清晰,它由两部分组成:do块和while条件。

do while循环和while循环有何区别?-图2
(图片来源网络,侵删)
do {
    // 循环体 - 需要重复执行的代码
} while (条件表达式); // 注意:这里的分号是必须的!

语法解析:

  1. do: 关键字,标志着循环体的开始。
  2. : 大括号内包含了需要重复执行的代码,即循环体。
  3. while: 关键字,用于判断是否继续下一次循环。
  4. 条件表达式: 这是一个返回布尔值(truefalse)的表达式,它是循环的“开关”。
  5. (分号): while语句的结束,do while循环中,这个分号是必不可少的,初学者很容易在此处犯错。

工作原理:“先执行,后判断”

do while循环最显著的特点就是它的执行流程:

  1. 第一步:无条件执行:程序会无条件地执行一次do块中的循环体代码。
  2. 第二步:判断条件:执行完循环体后,程序才会去计算while后面的条件表达式。
  3. 第三步:决定后续
    • 如果条件表达式的结果为true,则程序会跳回第一步,再次执行循环体。
    • 如果条件表达式的结果为false,则循环终止,程序继续执行do while循环之后的代码。

这个“至少执行一次”的特性,是它与whilefor循环最根本的区别。


实战代码示例:从理论到实践

光说不练假把式,我们通过几个经典的例子来感受do while循环的魅力。

do while循环和while循环有何区别?-图3
(图片来源网络,侵删)

示例1:经典的“至少执行一次”场景

需求:编写一个程序,要求用户输入一个1到100之间的数字,如果输入不合法,则提示用户并要求重新输入,直到输入合法为止。

import java.util.Scanner;
public class DoWhileExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int number;
        // 使用 do while 循环确保提示信息至少显示一次
        do {
            System.out.print("请输入一个1到100之间的数字: ");
            number = scanner.nextInt();
            if (number < 1 || number > 100) {
                System.out.println("输入无效,请重新输入!");
            }
        } while (number < 1 || number > 100); // 只有当输入无效时,循环才会继续
        System.out.println("恭喜!你输入了一个有效的数字: " + number);
        scanner.close();
    }
}

代码分析: 无论用户第一次输入的是-5还是200,程序都会先执行do块内的代码,即打印提示信息并读取输入,只有在输入不合法时,while条件才为true,循环继续,这完美地契合了我们的需求。

示例2:简单的数字累加

需求:从1开始累加数字,直到累加和超过100。

public class SummationExample {
    public static void main(String[] args) {
        int i = 1;
        int sum = 0;
        do {
            sum += i;
            System.out.println("当前 i = " + i + ", 累加和 = " + sum);
            i++;
        } while (sum <= 100);
        System.out.println("循环结束,最终的累加和是: " + sum);
    }
}

执行结果分析: 程序会进入循环,执行sum += i,然后判断sum是否小于等于100,当sum在某一轮累加后首次超过100时,循环终止,注意,sum的值是必然会超过100的。


Do While vs. While:一场关键的对话

为了更深刻地理解do while,我们把它和它的兄弟——while循环进行对比。

特性 do while 循环 while 循环
执行顺序 先执行循环体,后判断条件 先判断条件,后决定是否执行循环体
执行次数 至少执行一次,即使第一次条件就为false 可能一次都不执行,如果第一次条件就为false
语法结构 do { ... } while (condition); while (condition) { ... }
适用场景 循环体代码必须至少执行一次的场景。 循环体代码在条件不满足时无需执行的场景。

代码对比:

假设我们想让一个数字i从0开始,如果i小于5,就打印它。

  • 使用 while 循环:

    int i = 0;
    while (i < 5) { // 先判断,i=0 < 5,为true
        System.out.println("While: i = " + i);
        i++;
    }
    // 输出: 0, 1, 2, 3, 4
  • 使用 do while 循环:

    int j = 0;
    do {
        System.out.println("Do-While: j = " + j);
        j++;
    } while (j < 5); // 先执行,再判断
    // 输出: 0, 1, 2, 3, 4

    在这个例子中,因为第一次条件就为true,所以两者结果一样。

  • 改变初始条件,让条件第一次就为false:

    • 使用 while 循环:
      int k = 10;
      while (k < 5) { // 先判断,k=10 < 5,为false
          System.out.println("While: k = " + k);
          k++;
      }
      // 什么都不输出
    • 使用 do while 循环:
      int m = 10;
      do {
          System.out.println("Do-While: m = " + m); // 先执行,不管条件
          m++;
      } while (m < 5); // 再判断,m=11 < 5,为false,循环结束
      // 输出: Do-While: m = 10

      通过这个对比,do while“至少执行一次”的特性体现得淋漓尽致。


最佳实践与注意事项

  1. 防止无限循环:确保while条件中的变量在循环体内能够被修改,并且最终趋向于使条件为false,否则,你的程序将陷入死循环。

    // 错误示例:无限循环
    int x = 5;
    do {
        System.out.println("This will run forever!");
        // x 没有变化,条件永远为 true
    } while (x > 0);
  2. 分号别忘do while循环的末尾必须有一个分号,这是最常见的语法错误。

    // 错误示例
    do {
        System.out.println("Hello");
    } while (x > 0) // 缺少分号!编译器会报错
  3. 清晰的循环变量:在循环开始前,清晰地定义和初始化控制循环的变量,并确保在循环体内正确更新它,这能让你的代码更具可读性。


何时选择Do While?

通过本文的学习,你应该已经掌握了do while循环的用法,我们来总结一下在什么情况下应该优先选择它:

当你遇到以下情况时,do while是你的不二之选:

  • 输入验证:如用户登录、菜单选择,必须先展示界面或提示,再验证输入。
  • 游戏主循环:游戏开始后,主循环至少要运行一次来渲染初始画面。
  • 文件处理:尝试打开一个文件,如果失败则提示用户重新选择文件,至少要尝试一次。

记住一个简单的决策法则:如果代码块“必须”至少运行一次,就用do while;如果代码块“可能”一次都不运行,就用whilefor


循环是编程的基石,而do while循环是这个基石上一个独特而重要的组成部分,理解并熟练运用它,将让你的代码逻辑更加严谨、场景适应性更强,希望这篇文章能帮助你彻底搞懂Java中的do while循环,打开你的IDE,动手敲几个例子,感受它的魅力吧!

你对do while循环还有什么疑问或有趣的用法吗?欢迎在评论区留言分享!

分享:
扫描分享到社交APP
上一篇
下一篇