You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript菜单订单总价计算作业求助:prompt()使用与求和问题

问题修复与优化方案

原代码核心问题

  1. 字符串与数值混淆:prompt()返回的是字符串,直接执行sum += order会做字符串拼接,而非数值求和,比如输入"4"和"5"会得到"045"而不是9。
  2. 菜单映射缺失:用户输入的菜单标识(如b1)没有关联到对应的价格变量,直接累加输入值完全无法计算正确总价。
  3. 变量未声明:sum未用let/var声明,会变成全局变量,存在风险。
  4. 交互不灵活:固定循环2次,无法满足用户多份订单或提前结束的需求。

修复后的基础版本

<!DOCTYPE html>
<html>
<body>
  <h1>餐厅订单系统</h1>
  <button onclick="orderHere()">开始点餐</button>

  <script>
    // 用对象统一管理菜单,更清晰易维护
    const menu = {
      // 早餐
      b1: 4,
      b2: 5,
      bs1: 2,
      // 午餐
      l1: 10,
      l2: 20,
      l3: 5,
      // 晚餐
      d1: 10,
      d2: 20,
      // 配菜
      s1: 2,
      s2: 3,
      s3: 5
    };

    function orderHere() {
      let sum = 0;
      let order;
      // 先展示菜单给用户
      alert(`可选菜单及价格:
早餐:b1($4), b2($5), bs1($2)
午餐:l1($10), l2($20), l3($5)
晚餐:d1($10), d2($20)
配菜:s1($2), s2($3), s3($5)
输入对应标识点餐,输入"done"结束订单`);

      while (true) {
        order = prompt("请输入点餐标识(输入done结束):", "比如b1");
        // 处理用户取消或输入done的情况
        if (!order || order.toLowerCase() === "done") {
          break;
        }
        // 检查输入的标识是否在菜单中
        if (menu.hasOwnProperty(order)) {
          sum += menu[order];
          alert(`已添加${order},当前总价:$${sum}`);
        } else {
          alert("输入的菜单标识无效,请重新输入!");
        }
      }

      alert(`您的订单总价为 $${sum},祝您用餐愉快!`);
    }
  </script>
</body>
</html>

优化点说明

  • 用**对象menu**统一管理菜单,替代零散的变量,便于后续修改和扩展。
  • 增加菜单提示,让用户清楚知道可选选项。
  • 使用while循环替代固定次数的for循环,允许用户随时结束点餐。
  • 增加输入校验:判断用户输入的标识是否有效,避免无效输入导致错误。
  • 每次点餐成功后反馈当前总价,提升交互体验。
  • 正确处理prompt()返回的字符串,通过对象映射获取对应数值进行累加。

极简实现版本(适合作业快速验证)

const menu = {b1:4, b2:5, bs1:2, l1:10, l2:20, l3:5, d1:10, d2:20, s1:2, s2:3, s3:5};
let total = 0;
let input;
alert("点餐输入标识:b1/b2/bs1/l1/l2/l3/d1/d2/s1/s2/s3,输入done结束");
while((input = prompt("点餐:"))?.toLowerCase() !== "done"){
  total += menu[input] || 0;
}
alert(`总价:$${total}`);

内容的提问来源于stack exchange,提问作者Devious

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 03:10:17