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

目录

  • 前言
  • 一、现实场景
    • 1.1 你点的每一碗,都是程序员的KPI
    • 1.2 关键数据角色扮演
  • 二、技术映射
  • 三、知识点呈现
    • 3.1 变量——你的数字日记本
    • 3.2 数据类型——数值的「职业规划」
    • 3.3 运算符——数学老师的黑板擦
  • 四、代码实现
    • 4.1 基础版:计算器の复仇
    • 4.2 进阶版:动态点餐系统
  • 五、延展思考
    • 5.1 挑战1:满减优惠如何实现?
    • 5.2 挑战2:菜品库存动态更新
    • 5.3 挑战3:城市特供——开发本地化推荐算法
  • 总结

前言

🎯 为什么你的外卖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.rhkb.cn/news/36961.html

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

相关文章

wsl2配置xv6全解(包括22.04Jammy)

文章目录 获取xv6源代码Ubuntu20.04 Version安装指令成功测试参考MIT2021年官方文档 24.04 Version安装指令成功测试参考MIT2024年官方文档 Ubuntu 22.04没有官方文档&#xff1f; 配置大体流程1. 卸载原本qemu&#xff08;如果之前安装了&#xff09;2. clone qemu官方源代码&…

【机器学习-分类算法】

比如将一张图片按尺寸识别分类为横向或者纵向两类就是二分类问题 设x轴为图像的宽、y轴为图像的高&#xff0c;那么把训练数据展现在图上就是这样的: 若增加更多的数据集有: 如果只用一条线将图中白色的点和黑色的点分开,那么: 分类的目的就是找到这条线,就可以根据点在线…

java项目之基于ssm的疫苗预约系统(源码+文档)

项目简介 疫苗预约系统实现了以下功能&#xff1a; 用户信息管理 负责管理系统用户的信息。 疫苗信息管理 负责管理疫苗的相关信息。 疫苗类型管理 负责管理不同种类疫苗的信息。 疫苗留言管理 负责管理用户关于疫苗的留言和反馈。 公告信息管理 负责发布和管理与疫苗相关…

游戏引擎学习第171天

回顾并计划今天的内容 昨天&#xff0c;我们在处理一项任务时暂停了&#xff0c;当时的目标非常清晰&#xff0c;但由于时间限制&#xff0c;我们将其分成了两个部分。我们首先完成了运行时部分&#xff0c;而今天要处理的是资产打包部分。这项任务涉及改进字体系统&#xff0…

跨平台RTSP高性能实时播放器实现思路

跨平台RTSP高性能实时播放器实现思路 目标&#xff1a;局域网100ms以内超低延迟 一、引言 现有播放器&#xff08;如VLC&#xff09;在RTSP实时播放场景中面临高延迟&#xff08;通常数秒&#xff09;和资源占用大的问题。本文提出一种跨平台解决方案&#xff0c;通过网络层…

Deepseek+飞书实现简历分析建议+面试题

步骤一&#xff1a;创建多维表格 点击云文档点击主页点击新建创建多维表格 步骤二&#xff1a;创建列 首先将多余的列进行删除 创建简历内容列&#xff0c;类型使用文本&#xff0c;目的是将简历内容复制进来 创建AI列&#xff1a;简历分析、简历建议、面试题 点击确定后&…

Linux基础开发工具--gdb的使用

目录 安装准备&#xff1a; 1. 背景 2. 开始使用 3. 做一个Linux第一个小程序&#xff0d;进度条 安装准备&#xff1a; 对于gdb的学习使用&#xff0c;为了方便大家学习&#xff0c;我建议大家先安装一个cgdb进行学习&#xff0c;这样方便观察操作与学习gdb。 用以下…

leetcode热题100道——两数之和

给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案&#xff0c;并且你不能使用两次相同的元素。 你可以按任意顺序返回答案。 示例 1…

某公司制造业研发供应链生产数字化蓝图规划P140(140页PPT)(文末有下载方式)

详细资料请看本解读文章的最后内容。 资料解读&#xff1a;某公司制造业研发供应链生产数字化蓝图规划 在当今制造业数字化转型的浪潮中&#xff0c;企业信息化建设成为提升竞争力的关键。本资料围绕 XX 公司的信息化建设展开&#xff0c;涵盖业务战略、信息化路线图、各领域系…

【总结篇】java多线程,新建线程有几种写法,以及每种写法的优劣势

java多线程 新建线程有几种写法,以及每种写法的优劣势 [1/5]java多线程 新建线程有几种写法–继承Thread类以及他的优劣势[2/5]java多线程-新建线程有几种写法–实现Runnable接口以及他的优劣势[3/5]java多线程 新建线程有几种写法–实现Callable接口结合FutureTask使用以及他的…

GB9706.1-2020附件J绝缘路径参考

下图为GB9706.1-2020绝缘路径示例图&#xff0c;附件J。 MOOP&#xff1a;对操作者的防护措施 MOPP&#xff1a;对患者的防护措施 1、保护接地外壳&#xff0c;网电源及次级电路与外壳之间。 网电源-外壳&#xff1a;1MOOP 次级电路-外壳&#xff1a;1MOOP 2、未保护接地外壳&…

基于springboot的教务系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 这些年随着Internet的迅速发展&#xff0c;我们国家和世界都已经进入了互联网大数据时代&#xff0c;计算机网络已经成为了整个社会以及经济发展的巨大动能&#xff0c;各个高校的教务工作成为了学校管理事务的重要目标和任务&#xff0c;因此运用互联网技术来提高教务的…

大模型+知识图谱:赋能知识智能新升级

在大模型&#xff08;Large Language Model, LLM&#xff09;飞速发展的今天&#xff0c;如何把传统行业中沉淀多年的大量结构化与非结构化数据真正“用起来”&#xff0c;正成为推动智能化转型的关键一步。 找得到&#xff0c;看得懂&#xff0c;为何很难&#xff1f; 以制造…

Qt6+QML实现Windows屏幕录制

前言 Qt6提供了更丰富的多媒体支持类&#xff0c;使用Qt6 QMediaCaptureSession、QScreenCapture、QMediaRecorder&#xff0c;来实现一个屏幕录制的demo&#xff0c;其中QScreenCapture 最低版本 Qt6.5。支持录制的清晰度设置&#xff0c;选择视频保存位置&#xff0c;UI使用…

Java---SpringMVC(2)

下文使用postman模拟客户端传递信息。 1.postman传参介绍 1.1传递单个参数 1.2传递多个参数 注意事项 使⽤基本类型&#xff08;int...&#xff09;来接收参数时, 参数必须传(除boolean类型), 否则会报500错误 类型不匹配时, 会报400错误 对于包装类型, 如果不传对应参数&a…

MySQL为什么默认使用RR隔离级别?

大家好&#xff0c;我是锋哥。今天分享关于【MySQL为什么默认使用RR隔离级别&#xff1f;】面试题。希望对大家有帮助&#xff1b; MySQL为什么默认使用RR隔离级别&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 MySQL 默认使用 RR (Repeatable Read) …

人工智能之数学基础:线性方程组求解的得力助手——增广矩阵

本文重点 增广矩阵是一个极具实用价值的工具,尤其在处理线性方程组时,它展现了卓越的功效。通过整合系数和常数项,增广矩阵简化了计算过程并提供了判断方程组解集的有效方法。 增广矩阵的起源与定义 增广矩阵的概念源于线性方程组求解的需求。在解决线性方程组时,我们常…

【Axure高保真原型】增删改饼图

今天和大家分享能增删改的饼图的原型模版&#xff0c;该模版是用Axure原生元件制作的&#xff0c;所以不需要联网或者调用外部接口&#xff0c;使用也很方便&#xff0c;默认数据在中继器表格里填写&#xff0c;默认支持20个不同颜色的扇形&#xff0c;后续可根据实际需要自己增…

WordPress系统获取webshell的攻略

一.后台修改模板拿WebShell 1.进入Vulhub靶场并执⾏以下命令开启靶场&#xff1b;在浏览器中访问并安装好 #执⾏命令 cd /vulhub/wordpress/pwnscriptum docker-compose up -d 2. 修改其WP的模板&#xff0c;登陆WP后点击 【外 观】 --》 【编辑】 --》 404.php 3.插入一句话木…

Java反序列化CommonsBeanutils无依赖打Shiro

说明 如果您之前未了解过 Commons Collections&#xff08;CC&#xff09;利用链&#xff0c;建议您先阅读相关基础文章&#xff0c;然后再回头阅读此文章。这样可以更好地理解其中的内容 Java反序列化-Commons Collections3利用链分析详解 Java反序列化-Commons Collections…