当前位置: 首页 > article >正文

Java学习教程,从入门到精通,Java 循环结构:while 和 do...while(17)

Java 循环结构:while 和 do…while

在 Java 中,whiledo...while 是两种基本的循环控制结构,用于在特定条件下重复执行一段代码。

1. while 循环

语法

while (condition) {
    // 循环体
}

知识点

  • condition 是一个布尔表达式。
  • 在每次循环开始前,都会检查 condition 是否为 true
  • 如果 conditiontrue,则执行循环体;否则,跳出循环。
  • while 循环适用于在循环开始前已知循环条件的情况。
    实际案例
public class WhileExample {
    public static void main(String[] args) {
        int count = 0;

        while (count < 5) {
            System.out.println("Count: " + count);
            count++;
        }
    }
}

输出:

Count: 0
Count: 1
Count: 2
Count: 3
Count: 4
2. do…while 循环

语法

do {
    // 循环体
} while (condition);

知识点

  • condition 是一个布尔表达式。
  • 循环体至少会被执行一次,因为 condition 是在循环体执行完毕后检查的。
  • 如果 conditiontrue,则重复执行循环体;否则,跳出循环。
  • do...while 循环适用于在循环开始前必须执行一次循环体的情况,且循环条件在循环体之后检查。

实际案例

public class DoWhileExample {
    public static void main(String[] args) {
        int count = 0;

        do {
            System.out.println("Count: " + count);
            count++;
        } while (count < 5);
    }
}

输出:

Count: 0
Count: 1
Count: 2
Count: 3
Count: 4

总结

  • while 循环:在进入循环之前检查条件,如果条件为 true,则执行循环体。适用于循环条件在循环开始之前已知的情况。
  • do…while 循环:无论条件如何,循环体至少执行一次,然后在每次循环结束后检查条件。适用于循环体必须至少执行一次的情况。

这两种循环结构的选择取决于你的具体需求,以及是否需要确保循环体至少执行一次。

在Java中,whiledo...while是两种用于实现循环的语句,它们有相似之处,但也有一些关键的区别。以下是这两种循环的详细区分:

相似之处

  1. 条件判断:两种循环都依赖于一个布尔条件来决定是否继续执行循环体。
  2. 循环体:当条件为true时,两种循环都会执行循环体内的代码。

关键区别

  1. 执行顺序

    • while循环在每次迭代之前检查条件。如果条件为false,则循环体不会被执行,循环直接结束。
    • do...while循环在每次迭代之后检查条件。这意味着循环体至少会被执行一次,因为条件检查发生在循环体执行之后。
  2. 适用场景

    • while循环适用于在循环开始前已知是否需要执行循环体的情况。
    • do...while循环适用于必须至少执行一次循环体,然后根据某个条件决定是否继续执行的情况。

代码示例

while循环示例

int count = 0;
while (count < 5) {
    System.out.println("Count: " + count);
    count++;
}
// 输出:Count: 0, Count: 1, Count: 2, Count: 3, Count: 4

在这个例子中,while循环在每次迭代之前检查count < 5这个条件。当count增加到5时,条件变为false,循环结束。

do…while循环示例

int count = 0;
do {
    System.out.println("Count: " + count);
    count++;
} while (count < 5);
// 输出:Count: 0, Count: 1, Count: 2, Count: 3, Count: 4

在这个例子中,do...while循环至少执行一次循环体,然后在每次迭代之后检查count < 5这个条件。尽管结果看起来与while循环相同,但在这个特定的例子中,即使count的初始值设为5,do...while循环也会打印出Count: 5(尽管随后会立即结束循环),而while循环则根本不会执行。

总结

  • 使用while循环时,如果条件一开始就为false,则循环体不会被执行。
  • 使用do...while循环时,无论条件如何,循环体至少会被执行一次。

选择哪种循环取决于您的具体需求。如果您需要在循环开始前检查条件,则使用while循环。如果您需要确保循环体至少执行一次,则使用do...while循环。

当然可以。基于您引用的关于 do...while 循环的描述,我将为您提供更多实际的 Java 编程案例,以加深您对这种循环结构的理解。

案例一:用户输入验证

在这个例子中,我们使用 do...while 循环来确保用户输入了一个有效的整数。

import java.util.Scanner;

public class UserInputValidation {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int number = 0; // 初始化一个变量来存储用户输入的数字
        boolean isValid = false; // 初始化一个布尔变量来检查输入是否有效

        do {
            System.out.print("请输入一个整数: ");
            if (scanner.hasNextInt()) {
                number = scanner.nextInt();
                isValid = true; // 如果输入是整数,则设置isValid为true
            } else {
                System.out.println("输入无效,请输入一个整数。");
                scanner.next(); // 清除无效输入
            }
        } while (!isValid); // 当输入无效时,继续循环

        System.out.println("您输入的整数是: " + number);
        scanner.close();
    }
}

在这个例子中,无论用户第一次输入的是什么,循环体都会至少执行一次。然后,根据输入是否有效(即是否为整数),isValid 变量会被更新,循环会继续或结束。

案例二:菜单驱动的程序

在这个例子中,我们使用 do...while 循环来创建一个简单的菜单驱动的程序,用户可以反复选择直到他们选择退出。

import java.util.Scanner;

public class MenuDrivenProgram {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int choice;
        boolean exit = false;

        do {
            System.out.println("请选择一个选项:");
            System.out.println("1. 显示消息");
            System.out.println("2. 计算两个数的和");
            System.out.println("3. 退出");
            choice = scanner.nextInt();

            switch (choice) {
                case 1:
                    System.out.println("这是一个消息!");
                    break;
                case 2:
                    int num1 = scanner.nextInt();
                    int num2 = scanner.nextInt();
                    System.out.println("两个数的和是: " + (num1 + num2));
                    break;
                case 3:
                    exit = true;
                    System.out.println("退出程序。");
                    break;
                default:
                    System.out.println("无效的选择,请重试。");
            }
        } while (!exit);

        scanner.close();
    }
}

在这个例子中,用户会看到一个菜单,并可以选择执行不同的操作。他们可以通过选择选项3来退出程序。在退出之前,无论用户选择什么,循环体都会至少执行一次。

案例三:猜数字游戏

在这个例子中,我们使用 do...while 循环来创建一个简单的猜数字游戏。

import java.util.Random;
import java.util.Scanner;

public class GuessNumberGame {
    public static void main(String[] args) {
        Random random = new Random();
        Scanner scanner = new Scanner(System.in);
        int targetNumber = random.nextInt(100) + 1; // 生成1到100之间的随机数
        int guess = 0;
        boolean win = false;

        do {
            System.out.print("请输入一个1到100之间的数字来猜测: ");
            guess = scanner.nextInt();

            if (guess < targetNumber) {
                System.out.println("太小了!");
            } else if (guess > targetNumber) {
                System.out.println("太大了!");
            } else {
                win = true;
                System.out.println("恭喜你,猜对了!");
            }
        } while (!win);

        scanner.close();
    }
}

在这个例子中,用户会反复猜测一个随机数,直到他们猜对为止。每次猜测后,程序都会告诉他们猜的数字是太大还是太小。由于使用了 do...while 循环,用户至少会进行一次猜测。
这些案例展示了 do...while 循环在不同场景下的应用,希望它们能帮助您更好地理解这种循环结构。


http://www.kler.cn/a/377919.html

相关文章:

  • Logstash 安装与部署(无坑版)
  • 【云备份项目】json以及jsoncpp库的使用
  • docker安装低版本的jenkins-2.346.3,在线安装对应版本插件失败的解决方法
  • node.js模块化分析
  • 1范数和无穷范数定义、对偶关系、1范数和无穷范数是凸函数的详细证明过程
  • RabbitMQ交换机类型
  • 2024年 · 地表最强的十大遥感影像分割模型
  • Js内建对象
  • 10个领先的增强现实平台【AR】
  • uniapp 使用uni.getRecorderManager录音,wav格式采样率低于44100,音频播放不了问题解决
  • 无人机敏捷反制技术算法详解!
  • 同一个页面击穿element样式后,会影响同样组件的使用
  • C#与C++交互开发系列(二十):跨进程通信之共享内存(Shared Memory)
  • 论文阅读:Computational Long Exposure Mobile Photography (一)
  • [SICTF Round4] Crypto
  • 简易了解Pytorch中的@ 和 * 运算符(附Demo)
  • 图优化以及如何将信息矩阵添加到残差
  • 网络编程项目之UDP聊天室
  • 【书生.浦语实战营】——入门岛
  • 【OpenSearch】机器学习(Machine Learning)神经搜索教程
  • 【Android】View的事件分发机制
  • Java项目实战II基于Spring Boot的美食烹饪互动平台的设计与实现(开发文档+数据库+源码)
  • 十四届蓝桥杯STEMA考试Python真题试卷第二套第二题
  • 解锁同城流量密码,六大实用技巧全解析
  • 勒索软件通过易受攻击的 Cyber​​Panel 实例攻击网络托管服务器
  • 探索 Spring Boot 中 Elasticsearch 的实战应用