外卖订单如何教会我变量与数据类型?

news/2025/3/21 22:34:59/文章来源:https://www.cnblogs.com/code-craft/p/18785957

前言

🎯 为什么你的外卖app比男朋友更懂你?

有没有发现,每次点外卖时那个 "总金额:33.4元" 的数字,比你男朋友记你的生日还精准?

今天咱们就来扒一扒,程序员是如何通过变量数据类型,让外卖系统记住你的口味、算清你的钱包、甚至预判你的宵夜欲望!

(准备好小本本,接下来要放大招了🔥)

一、现实场景

🍜 一碗牛肉面的数字暗战

1.1 你点的每一碗,都是程序员的KPI

[用户操作] 点击「+」加2碗牛肉面 → 点击「结算」

[系统后台]

  1. "已选数量"从0 → 2 🚀(变量在偷吃你的饭!)

  2. "总金额"从0元 → 25元(12.5元/碗 × 2)

  3. 最后弹出:"🎉 您的订单已成功生成!"

1.2 关键数据角色扮演

  • 吃货同事A: int noodleCount = 2;(永远不变的正整数)

  • 抠门老板B: final double PRICE = 12.5;(死活不改的单价)

  • 财务总监C: double total = 0.0;(算不清账的总裁)

二、技术映射

🗺️ 把外卖订单翻译成代码

生活行为 编程术语 关键特性 典型值示例
点餐数量变化 变量(Variable) 可读可写,内存中的小盒子 int count = 2
商品价格固定 常量(Constant) 一旦定义,终身不变 final double PRICE = 12.5
计算总金额 表达式(Expression) 数值运算与逻辑组合 count * PRICE
显示订单明细 输出(Output) 把数字变成人类能看懂的话 System.out.println()

🔥 如果用Excel计算总金额,和用Java有什么本质区别?

(答案藏在代码注释里👇)

三、知识点呈现

📚 编程世界的「数据身份证」

3.1 变量——你的数字日记本

// 声明日记本:用来记录今天吃了多少碗面
int foodCount = 0; // 修改日记:加2碗牛肉面
foodCount = foodCount + 2; 

千万不要这样做:

变量起名时,偷偷加Emoji!比如:

int hungryLevel = 😋; (表示吃货模式启动)

3.2 数据类型——数值的「职业规划」

类型 职业定位 终身技能 终身缺点 示例值
int 数学课代表 + - × ÷ 不能存小数点 2碗面
double 财务总监 + - × ÷ (还能存钱币符号¥) 计算时可能丢精度 12.5元
String 文学课代表 拼接文字 不能1+1=2 "牛肉面"
boolean 门卫大叔 判断真伪 只能说真话或假话 true/false

3.3 运算符——数学老师的黑板擦

// 加法:多吃两碗面
int add = 2 + 3; // 乘法:单价×数量
double multiply = 12.5 * 2; // 取余:吃不完的饭(有余数)
int remainder = 5 % 2; // 结果:1碗剩饭

运算优先级口诀

"先乘除后加减,括号能改天换地!"

// 先算乘法再算加法
double total = 2 + 3 * 4; // 结果:14元,不是20元!

四、代码实现

💻 从外卖小哥到程序员的逆袭

4.1 基础版:计算器の复仇

public class BasicOrder {public static void main(String[] args) {// 初始化订单(给变量打标签)int noodles = 2;      // 牛肉面数量final double price = 12.5; // 单价(老板定的,不能改!)// 计算总金额(数学课代表上线!)double total = noodles * price;// 打印结账单(自带emoji版)System.out.println("🍜 您的订单:");System.out.println(noodles + "碗牛肉面 × " + price + "元 = ");System.out.printf("%.2f元\n", total); // 结果:25.00元}
}

运行效果

🍜 您的订单:
2碗牛肉面 × 12.5元 =
25.00元

4.2 进阶版:动态点餐系统

import java.util.Scanner;public class AdvancedOrder {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 人机对话环节!(输入你的食量)System.out.print("请输入牛肉面数量:");int count = scanner.nextInt();// 计算你的账单(数学课代表上线!)double total = count * 12.5;// 打印带有emoji的豪华版结账单System.out.println("\n🎉 您的豪华订单:");System.out.println("🍜 " + count + "碗牛肉面 × " + "🥩12.5元" + " = ");System.out.printf("%.2f元\n", total);}
}

运行效果

请输入牛肉面数量:3🎉 您的豪华订单:
🍜 3碗牛肉面 × 🥩12.5元 = 
37.50元

五、延展思考

🚀 当外卖订单遇上人工智能

5.1 挑战1:满减优惠如何实现?

// 判断是否满足满减条件
boolean canDiscount = total >= 30; 
double finalPrice = canDiscount ? total - 5 : total;

5.2 挑战2:菜品库存动态更新

// 减少库存(假设初始有100碗)
int stock = 100;
stock = stock - count; 
if(stock < 0) {System.out.println("⚠️ 库存不足啦!");
}

if语句是Java中的分支语句之一,用于根据条件判断执行不同的代码块。

5.3 挑战3:城市特供——开发本地化推荐算法

// 根据用户地址推荐菜品(伪代码)
String city = "西安";
if(city.equals("西安")) {System.out.println("肉夹馍");
} else if(city.equals("成都")) {System.out.println("火锅");
}

city.equals("西安")‌ 用于比较字符串 city 是否等于字符串 "西安"。

总结

📝 编程其实比点外卖还简单!

  1. 万物皆可变量 🌍

    菜的数量、价格、总金额...这些都是程序的「记忆碎片」

  2. 给数据贴标签很重要 📦

    就像给快递箱贴「易碎品」标签,double用来装钱,String用来装文字

  3. 计算机的数学很好(但别太依赖)💰

    它会帮你算菜钱,但别指望它能理解"再来一份吧"这种人类语言

  4. 最重要的秘密武器 🗝️

    变量 = 存储数据的盒子

    数据类型 = 盒子的尺寸和材质

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/902683.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学嵌入式C语言,看这一篇就够了(6)

C语言的语句和块 C语言标准中一共提供6种语句 注意:C语言中的语句要指明执行的操作,并且没有特殊情况,语句是按照顺序执行的一般把实现某些功能的语句整合在一起,构成一个语法单元,C语言标准的语法单元也被称为块,也被称为块语句 复合语句 复合语句可以限制语句的作用范围…

P3375 【模板】KMP

P3375 【模板】KMP 题目描述 给出两个字符串 \(s_1\) 和 \(s_2\),若 \(s_1\) 的区间 \([l, r]\) 子串与 \(s_2\) 完全相同,则称 \(s_2\) 在 \(s_1\) 中出现了,其出现位置为 \(l\)。 现在请你求出 \(s_2\) 在 \(s_1\) 中所有出现的位置。 定义一个字符串 \(s\) 的 border 为 …

Cursor 使用教程

目录核心功能TabAICHATCOMPOSER@DocsWebGitNotepadCodebase技巧和思路如果Cursor乱改代码怎么办? 核心功能 Tab 这个是Cursor最为强大的功能,使用也很简单,在编写代码的时候,如果出现了灰色的提示词,直接按Tab就可以自动补全了最后的灰色的就是提示词 Cursor的光标预测也很…

C语言学习打卡第二天(2025.3.21)

时间有点少,今天也没学多少,只把指针基础概念学了一下(例如指针变量,下标法等),题也只做了三道。

3.21 学习记录

设计科技查询手机端系统,实现了政策关键字进行模糊匹配查询,点击下方的政策名称,可以打开新窗口,显示政策全文,实现分页查询,分类查询 采用springboot+vue3实现

P8436 【模板】边双连通分量

P8436 【模板】边双连通分量 题目描述 对于一个 \(n\) 个节点 \(m\) 条无向边的图,请输出其边双连通分量的个数,并且输出每个边双连通分量。 输入格式 第一行,两个整数 \(n\) 和 \(m\)。 接下来 \(m\) 行,每行两个整数 \(u, v\),表示一条无向边。 不保证图为简单图,图中可…

SvelteKit 最新中文文档教程(8)—— 部署 Node 服务端

前言 Svelte,一个语法简洁、入门容易,面向未来的前端框架。 从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1:Svelte 以其独特的编译时优化机制著称,具有轻量级、高性能、易上手等特性,非常适合构…

第四篇:本地私有化部署大模型(Ollama、vLLM、LMDeploy)

魔塔社区平台介绍 量化:将高精度数值转换成低精度表示的过程(通常用于减少模型的内存和提高推理速度) Ollama部署大模型 linux安装miniconda# 下载 Miniconda 安装脚本 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh # 运行安装脚本 bash…

用Adobe Illustrator编辑ArcGIS地图的方法

本文介绍在ArcGIS下属的ArcMap软件中,将绘制好的地图导出为.ai或者.eps格式文件,并在Adobe Illustrator软件中进一步编辑地图,并最终导出为图片格式的结果文件的方法~本文介绍在ArcGIS下属的ArcMap软件中,将绘制好的地图导出为.ai或者.eps格式文件,并在Adobe Illustrator软…

协议版iM蓝号检测,批量筛选iMessages数据,无痕检测是否开启iMessage服务

一、实现iMessage数据检测的两种方式:1.人工筛选,将要验证的号码输出到文件中,以逗号分隔。再将文件中的号码粘贴到iMessage客户端的地址栏,iMessage客户端会自动逐个检验该号码是否为iMessage账号,检验速度视网速而定。红色表示不是iMessage账号,蓝色表示iMessage账号。2…

记录项目调用链路

记录项目调用链路 内容 要理清项目中执行链路的调用关系,可以通过以下工具分类实现,涵盖从代码静态分析到运行时动态追踪的全链路管理:一、代码层调用关系分析 1. 静态代码分析工具PyCallGraph(Python) 生成代码调用关系图,直观展示函数调用链路。 pip install pycallgra…

部署kibana

获取kibana安装包 [root@elk1 ~]# wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.28-amd64.deb[root@elk1 ~]# ls kibana-7.17.28-amd64.deb kibana-7.17.28-amd64.deb# 安装kibana [root@elk1 ~]# dpkg -i kibana-7.17.28-amd64.deb 配置kibana [root@elk…