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
就非常合适。否则,你可以根据具体情况选择使用 for
或 while
循环。
下面是 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
函数来获取用户的输入,并且通过正则表达式来验证输入是否为有效的数字。只要输入不是有效的数字或者不是正数,循环就会持续运行直到获得有效的输入为止。
注意事项
-
循环终止条件:确保
do...while
循环有一个明确的终止条件,否则可能会导致无限循环。 -
循环体内修改条件:与
while
和for
循环一样,在do...while
循环体内也必须有改变循环条件的部分,否则循环将不会停止。 -
性能考虑:虽然
do...while
循环可以保证至少执行一次循环体,但在大多数情况下,如果知道循环体是否应该至少执行一次,那么直接使用while
或for
可能更合适。 -
语言支持:大多数现代编程语言都支持
do...while
循环,但在某些特定的语言或环境中可能需要特别注意其用法和支持情况。
案例1
让我们来看一个具体的实用学习案例,这里我们使用一个简单的游戏——猜数字游戏。这个游戏的目标是让用户猜测一个随机生成的数字。我们将使用 do...while
循环来实现这一功能,确保用户至少有一次机会来猜测数字。
游戏规则:
- 计算机随机生成一个介于 1 到 100 之间的整数。
- 用户尝试猜测这个数字。
- 如果用户猜对了,游戏结束并显示恭喜信息。
- 如果用户没有猜对,给出提示(太高或太低)并允许用户再次猜测。
- 游戏至少进行一次。
示例代码(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();
代码解释:
- 生成随机数:使用
Math.random()
生成一个 [0, 1) 区间内的随机浮点数,然后乘以 100 并取整(使用Math.floor()
),再加上 1,得到一个 1 到 100 之间的整数。 - 初始化变量:设置
guess
变量用于存储用户的猜测,correct
变量用于标记用户是否已经猜对。 - 循环:使用
do...while
循环来处理用户的猜测。每次循环中,程序会提示用户输入一个数字,并根据用户的猜测给出相应的反馈。 - 退出条件:当用户猜对数字时,将
correct
设置为true
,从而退出循环。
这种类型的简单游戏非常适合教学场景,可以帮助学生理解 do...while
循环的工作原理以及如何在实际应用中使用它。此外,这个游戏还可以扩展更多功能,例如限制猜测次数、记录最高得分等。
案例2
案例:一个简单的库存管理系统。这个系统将帮助用户管理商店的商品库存,包括添加商品、删除商品、查看库存以及更新库存数量等功能。
我们将使用 JavaScript 来编写这个程序,并利用 do...while
循环来实现用户交互界面。
功能需求:
- 添加商品到库存。
- 删除商品。
- 查看当前库存。
- 更新商品的数量。
- 允许用户选择退出程序。
示例代码:
// 初始化库存列表
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();
代码解释:
- 初始化库存列表:创建一个空数组
inventory
来存储商品信息。 - 显示菜单:定义一个
displayMenu
函数来显示菜单选项,并返回用户的选择。 - 添加商品:定义
addItem
函数来添加商品到库存。 - 删除商品:定义
removeItem
函数来删除库存中的商品。 - 查看库存:定义
viewInventory
函数来显示当前库存中的所有商品及其数量。 - 更新商品数量:定义
updateQuantity
函数来更新库存中商品的数量。 - 主函数:定义
main
函数作为程序的入口,使用do...while
循环来不断显示菜单并根据用户的选择执行相应操作,直到用户选择退出。
这个综合案例不仅展示了 do...while
循环的应用,还涉及到了基本的数据结构(数组)、用户输入处理、错误检查等实用功能,非常适合用于教学和实际项目开发。
————————————————
最后我们放松一下眼睛