JavaScript for循环问题求助:按订单次数重复打印提示
修正Tacos点餐程序的循环问题
你的for循环写法存在逻辑错误,导致无法根据订购数量重复打印提示:当前循环初始值设为prompt,条件又是i <= prompt,这意味着循环只会执行一次——第一次迭代时i等于prompt,执行后i自增就会大于prompt,循环直接终止。
关键修正点
- 转换数据类型:
window.prompt返回的是字符串,需转为数字才能正确用于循环次数控制。 - 调整循环结构:让循环从0开始,到小于订购数量的次数结束,确保执行对应次数。
- 避免覆盖原生方法:不要用
confirm、prompt作为全局变量名,防止覆盖浏览器原生API。 - 增加输入校验:处理用户输入非数字、超出范围的异常情况。
修正后的完整代码
// 自定义变量名,避免覆盖原生API const wantsToOrder = window.confirm("Hey there! Would you like to order some tacos?"); const tacoCountStr = window.prompt("How many tacos would you like to order? (Maximum amount is 99 tacos)"); // 转为数字,默认值设为0处理非数字输入 const tacoCount = parseInt(tacoCountStr) || 0; console.log(wantsToOrder); console.log(tacoCount); function place_order() { // 校验输入合法性 if (tacoCount <= 0 || tacoCount > 99) { console.log("请输入1-99之间的有效数量!"); return; } console.log(`Your order will contain: ${tacoCount} tacos!!!`); console.log(`Your total is: ${tacoCount * 5} USD.`); // 循环对应次数打印制作提示 for (let i = 0; i < tacoCount; i++) { // 若需显示当前制作第几份,可改为:`Your ${i+1} taco is being prepared 🌮` console.log(`Your ${tacoCount} tacos are being prepared 🌮`); } } place_order();
可选优化
如果想让每次提示更精准(显示当前制作第几份),只需修改循环内的打印语句:
console.log(`Your ${i+1} taco is being prepared 🌮`);
这样订购3份时,会依次打印"Your 1 taco is being prepared 🌮"、"Your 2 taco is being prepared 🌮"、"Your 3 taco is being prepared 🌮"。
内容的提问来源于stack exchange,提问作者Manuel Lopez
相关产品推荐
相关产品推荐

