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

do…while循环语句的使用

文章目录

      • 实际应用情况
        • 示例:用户输入验证
      • 注意事项
    • 案例1
      • 游戏规则:
      • 示例代码(JavaScript):
      • 代码解释:
    • 案例2
      • 功能需求:
      • 示例代码:
      • 代码解释:

do...while 循环是编程中常用的一种循环结构,它与 while 循环类似,但是有一个关键的区别: do...while 循环会先执行一次循环体内的代码,然后再检查条件是否为真。如果条件为真(true),则继续执行循环;如果条件为假(false),则停止循环。这意味着即使条件一开始就不满足, do...while 循环的循环体也会至少执行一次。

下面是一个 do...while 循环的基本语法结构:

do {
    // 循环体
} while (条件);

这里是一个具体的例子,在这个例子中,我们将使用 do...while 循环来打印数字 1 到 5:

let count = 1;
do {
    console.log(count);
    count++;
} while (count <= 5);

在这个例子中,循环体会在每次迭代后输出变量 count 的值,并且每次迭代都会将 count 增加 1。当 count 的值大于 5 时,循环停止。

需要注意的是,do...while 循环中的条件是在循环体执行之后检查的,所以无论条件如何,循环体至少会被执行一次。这与 while 循环不同,while 循环在执行循环体之前就会检查条件,如果条件一开始就是假的,则循环体一次也不会执行。

如果你需要一个循环来保证某些代码至少被执行一次,那么 do...while 就非常合适。否则,你可以根据具体情况选择使用 forwhile 循环。

下面是 do...while 循环的一些实际应用情况和注意事项。

实际应用情况

示例:用户输入验证

假设你需要从用户那里获取一些输入,并且你需要确保用户输入了有效的数据。使用 do...while 循环可以确保程序至少询问用户一次,并且只有在用户提供了有效输入后才会停止询问。

let validInput = false;
let input;

do {
    input = prompt("请输入你的年龄:");
    if (/^\d+$/.test(input) && parseInt(input, 10) > 0) {
        validInput = true;
    } else {
        alert("请输入有效的年龄!");
    }
} while (!validInput);

console.log("你输入的年龄是:" + input);

在这个示例中,我们使用 JavaScript 的 prompt 函数来获取用户的输入,并且通过正则表达式来验证输入是否为有效的数字。只要输入不是有效的数字或者不是正数,循环就会持续运行直到获得有效的输入为止。

注意事项

  1. 循环终止条件:确保 do...while 循环有一个明确的终止条件,否则可能会导致无限循环。

  2. 循环体内修改条件:与 whilefor 循环一样,在 do...while 循环体内也必须有改变循环条件的部分,否则循环将不会停止。

  3. 性能考虑:虽然 do...while 循环可以保证至少执行一次循环体,但在大多数情况下,如果知道循环体是否应该至少执行一次,那么直接使用 whilefor 可能更合适。

  4. 语言支持:大多数现代编程语言都支持 do...while 循环,但在某些特定的语言或环境中可能需要特别注意其用法和支持情况。

案例1

让我们来看一个具体的实用学习案例,这里我们使用一个简单的游戏——猜数字游戏。这个游戏的目标是让用户猜测一个随机生成的数字。我们将使用 do...while 循环来实现这一功能,确保用户至少有一次机会来猜测数字。

游戏规则:

  1. 计算机随机生成一个介于 1 到 100 之间的整数。
  2. 用户尝试猜测这个数字。
  3. 如果用户猜对了,游戏结束并显示恭喜信息。
  4. 如果用户没有猜对,给出提示(太高或太低)并允许用户再次猜测。
  5. 游戏至少进行一次。

示例代码(JavaScript):

function guessTheNumber() {
    const randomNumber = Math.floor(Math.random() * 100) + 1; // 生成 1 到 100 的随机数
    let guess;
    let correct = false;

    do {
        guess = parseInt(prompt("猜一个介于 1 到 100 之间的数字:"));
        
        if (guess === randomNumber) {
            correct = true;
            alert("恭喜你,猜对了!");
        } else if (guess < randomNumber) {
            alert("太低了,请再试一次!");
        } else {
            alert("太高了,请再试一次!");
        }
    } while (!correct);
}

// 调用函数开始游戏
guessTheNumber();

代码解释:

  1. 生成随机数:使用 Math.random() 生成一个 [0, 1) 区间内的随机浮点数,然后乘以 100 并取整(使用 Math.floor()),再加上 1,得到一个 1 到 100 之间的整数。
  2. 初始化变量:设置 guess 变量用于存储用户的猜测,correct 变量用于标记用户是否已经猜对。
  3. 循环:使用 do...while 循环来处理用户的猜测。每次循环中,程序会提示用户输入一个数字,并根据用户的猜测给出相应的反馈。
  4. 退出条件:当用户猜对数字时,将 correct 设置为 true,从而退出循环。

这种类型的简单游戏非常适合教学场景,可以帮助学生理解 do...while 循环的工作原理以及如何在实际应用中使用它。此外,这个游戏还可以扩展更多功能,例如限制猜测次数、记录最高得分等。

案例2

案例:一个简单的库存管理系统。这个系统将帮助用户管理商店的商品库存,包括添加商品、删除商品、查看库存以及更新库存数量等功能。

我们将使用 JavaScript 来编写这个程序,并利用 do...while 循环来实现用户交互界面。

功能需求:

  1. 添加商品到库存。
  2. 删除商品。
  3. 查看当前库存。
  4. 更新商品的数量。
  5. 允许用户选择退出程序。

示例代码:

// 初始化库存列表
const inventory = [];

function displayMenu() {
    console.log("\n--- 库存管理系统 ---");
    console.log("1. 添加商品");
    console.log("2. 删除商品");
    console.log("3. 查看库存");
    console.log("4. 更新商品数量");
    console.log("5. 退出");
    return prompt("请选择一个选项:");
}

function addItem() {
    const name = prompt("请输入商品名称:");
    const quantity = parseInt(prompt("请输入商品数量:"));
    if (!isNaN(quantity) && quantity >= 0) {
        inventory.push({ name: name, quantity: quantity });
        console.log(`已添加 ${name} 到库存。`);
    } else {
        console.log("请输入有效的数量。");
    }
}

function removeItem() {
    const name = prompt("请输入要删除的商品名称:");
    for (let i = 0; i < inventory.length; i++) {
        if (inventory[i].name === name) {
            inventory.splice(i, 1);
            console.log(`已删除 ${name}`);
            return;
        }
    }
    console.log(`${name} 不在库存中。`);
}

function viewInventory() {
    console.log("\n--- 当前库存 ---");
    if (inventory.length === 0) {
        console.log("库存为空。");
    } else {
        for (let item of inventory) {
            console.log(`${item.name}: ${item.quantity}`);
        }
    }
}

function updateQuantity() {
    const name = prompt("请输入要更新的商品名称:");
    const newQuantity = parseInt(prompt("请输入新的数量:"));
    if (!isNaN(newQuantity) && newQuantity >= 0) {
        for (let item of inventory) {
            if (item.name === name) {
                item.quantity = newQuantity;
                console.log(`已更新 ${name} 的数量为 ${newQuantity}`);
                return;
            }
        }
        console.log(`${name} 不在库存中。`);
    } else {
        console.log("请输入有效的数量。");
    }
}

function main() {
    let choice;
    do {
        choice = displayMenu();
        switch (choice) {
            case "1":
                addItem();
                break;
            case "2":
                removeItem();
                break;
            case "3":
                viewInventory();
                break;
            case "4":
                updateQuantity();
                break;
            case "5":
                console.log("退出程序。");
                break;
            default:
                console.log("无效的选择,请重新输入。");
        }
    } while (choice !== "5");
}

// 运行主函数
main();

代码解释:

  1. 初始化库存列表:创建一个空数组 inventory 来存储商品信息。
  2. 显示菜单:定义一个 displayMenu 函数来显示菜单选项,并返回用户的选择。
  3. 添加商品:定义 addItem 函数来添加商品到库存。
  4. 删除商品:定义 removeItem 函数来删除库存中的商品。
  5. 查看库存:定义 viewInventory 函数来显示当前库存中的所有商品及其数量。
  6. 更新商品数量:定义 updateQuantity 函数来更新库存中商品的数量。
  7. 主函数:定义 main 函数作为程序的入口,使用 do...while 循环来不断显示菜单并根据用户的选择执行相应操作,直到用户选择退出。

这个综合案例不仅展示了 do...while 循环的应用,还涉及到了基本的数据结构(数组)、用户输入处理、错误检查等实用功能,非常适合用于教学和实际项目开发。

😍😍 海量H5小游戏、微信小游戏、Web casualgame源码😍😍
😍😍试玩地址: https://www.bojiogame.sg😍😍
😍看上哪一款,需要源码的csdn私信我😍

————————————————

​最后我们放松一下眼睛
在这里插入图片描述


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

相关文章:

  • shell脚本
  • Python NumPy(7):连接数组、分割数组、数组元素的添加与删除
  • 在线课堂小程序设计与实现(LW+源码+讲解)
  • PostgreSQL 约束
  • 【win11】解决msrdc.exe窗口启动导致周期性失去焦点
  • WebSocket 详解:全双工通信的实现与应用
  • C# WinForm 用名字name字符串查找子控件
  • 数智时代的新航向:The Open Group 2024生态系统架构·可持续发展年度大会邀您共筑AI数字新时代
  • 技术总结(五)
  • DC系列靶机-DC2
  • 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——7.list(无习题)
  • Java 线性搜索
  • 数据结构算法题:栈与队列的使用(一)
  • 追逐AGI!微软AI副总裁、Phi小模型领导者Bubeck将加入OpenAI
  • JVM的GC算法以及常见垃圾回收器
  • 多级缓存-
  • HTML5实现古典音乐网站源码模板1
  • 分布式数据库:构建高效、可靠的数据存储与管理系统
  • 观察者模式的思考
  • CSS 实战录: 双栏、四等分、不等间距、自适应...
  • STL --- list(C++)
  • 线程局部存储(TLS)
  • C++11的新特性
  • 【C++算法】10.滑动窗口_无重复字符的最长子串
  • JSON 详解
  • JavaScript 数据类型