当前位置: 首页 > article >正文

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

目录

  • 前言
  • 一、现实场景
    • 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. 最重要的秘密武器 🗝️

    变量 = 存储数据的盒子

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

相关文章:

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

目录 前言一、现实场景1.1 你点的每一碗&#xff0c;都是程序员的KPI1.2 关键数据角色扮演 二、技术映射三、知识点呈现3.1 变量——你的数字日记本3.2 数据类型——数值的「职业规划」3.3 运算符——数学老师的黑板擦 四、代码实现4.1 基础版&#xff1a;计算器の复仇4.2 进阶…...

HOW - 平时如何保持学习和成长?

目录 前言数字时代的系统性学习方法论一、场景驱动的实战学习&#xff1a;从工具赋能到知识沉淀二、结构化的系统学习&#xff1a;构建知识体系的方法论&#xff08;一&#xff09;精准学习策略&#xff08;二&#xff09;学习成效评估体系&#xff08;三&#xff09;专项研究 …...

Web开发-JS应用原生代码前端数据加密CryptoJS库jsencrypt库代码混淆

知识点&#xff1a; 1、安全开发-原生JS-数据加密&代码混淆 2、安全开发-原生JS-数据解密安全案例 一、演示案例-WEB开发-原生JS&第三方库-数据加密 前端技术JS实现&#xff1a; 1、非加密数据大致流程&#xff1a; 客户端发送->明文数据传输-服务端接受数据->…...

手动集成sqlite的方法

注意到sqlite有backup方法&#xff08;https://www.sqlite.org/backup.html&#xff09;。 也注意到android中sysroot下&#xff0c;没有sqlite3的库&#xff0c;也没有相关头文件。 如果要使用 sqlite 的backup&#xff0c;那么就需要手动集成sqlite代码到项目中。可以如下操…...

比特币牛市还在不在

在加密货币的风云世界里&#xff0c;比特币的一举一动始终牵动着投资者们的神经。近期比特币的涨幅动作&#xff0c;再次引发了市场对于牛市是否仍在延续的激烈讨论。 在深入探索比特币市场的过程中&#xff0c;获取全面且及时的资讯至关重要。您可以通过访问Techub News&#…...

Python、MATLAB和PPT完成数学建模竞赛中的地图绘制

参加数学建模比赛时&#xff0c;很多题目——诸如统计类、数据挖掘类、环保类、建议类的题目总会涉及到地理相关的情景&#xff0c;往往要求我们制作与地图相关的可视化内容。如下图&#xff0c;这是21年亚太赛的那道塞罕坝的题目&#xff0c;期间涉及到温度、降水和森林覆盖率…...

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

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

编写一个简单的chrome截图扩展

文件结构&#xff1a; screenshot |-- background.js ---> service_worker运行的js |-- images ---> 图片 | |-- logo-128x128.png | |-- logo-16x16.png | |-- logo-32x32.png | -- logo-48x48.png -- manifest.json --->…...

吴恩达机器学习笔记复盘(六)梯度下降算法

简介 梯度下降&#xff08;Gradient Descent&#xff09;是一种常用的优化算法&#xff0c;广泛应用于机器学习、深度学习等领域&#xff0c;在这里是用于求J&#xff08;w,b&#xff09;局部最小值。 我自己觉得这样说有点过于抽象。换个直观点的说法就是&#xff0c;一个人…...

【机器学习chp14 — 3】生成式模型—生成对抗网络GAN(超详细分析,易于理解,推导严谨,一文就够了)

目录 三、生成对抗网络 ( Generative Adversarial Networks&#xff0c;GAN ) 1、GAN的基本思想 &#xff08;1&#xff09;生成器与判别器的基本结构与演变 &#xff08;2&#xff09;“对抗”机制及名词由来 2、GAN训练的基本算法 &#xff08;1&#xff09;网络初始化与…...

机器人打磨控制技术

工具姿态调整运动 法线方向对齐运动&#xff1a;机器人实时调整工具姿态&#xff0c;使打磨工具的轴线与工件曲面的法线方向一致。例如&#xff0c;在球面打磨时&#xff0c;工具需始终垂直于球面切线。角度补偿运动&#xff1a;针对倾斜或不规则曲面&#xff0c;通过调整机器人…...

K8S学习之基础四十:K8S配置altermanager发送告警到钉钉群

配置altermanager发送告警到钉钉群 ​ 创建钉钉群&#xff0c;设置机器人助手(必须是管理员才能设置)&#xff0c;获取webhook webhook&#xff1a; https://oapi.dingtalk.com/robot/send?access_token25bed933a52d69f192347b5be4b2193bc0b257a6d9ae68d81619e3ae3d93f7c6…...

Spring Boot + Spring Integration整合MQTT打造双向通信客户端

1. 概述 本文分两个章节讲解MQTT相关的知识&#xff0c;第一部份主要讲解MQTT的原理和相关配置&#xff0c;第二个章节主要讲和Spring boot的integration相结合代码的具体实现&#xff0c;如果想快速实现功能&#xff0c;可直接跳过第一章节查看第二章讲。 1.1 MQTT搭建 为了…...

Sampling – Model Context Protocol Specification

网页链接 https://spec.modelcontextprotocol.io/specification/draft/client/sampling/ 主要内容概述 该网页详细介绍了Model Context Protocol (MCP) 中的“Sampling”功能。Sampling允许服务器通过客户端请求语言模型&#xff08;LLM&#xff09;生成文本、音频或图像内容…...

Java 填充 PDF 模版

制作 PDF 模版 安装 OnlyOffice 从 OnlyOffice 官网下载 OnlyOffice Desktop&#xff0c;安装过程很简单&#xff0c;一路下一步即可。用 OnlyOffice 制作 PDF 模版&#xff08;表单&#xff09; 使用 OnlyOffice 表单设计器&#xff0c;制作表单&#xff0c;如下图 注意命名…...

前端项目中应该如何选择正确的图片格式

在前端项目中选择正确的图片格式是优化页面性能、提升用户体验的关键步骤之一。以下是常见图片格式的特点、适用场景及选择建议&#xff0c;帮助你在不同场景下做出最优决策&#xff1a; 一、常见图片格式对比 格式特点适用场景不适用场景JPEG- 有损压缩&#xff0c;文件小- 不…...

Vulnhub-dedecms织梦通关攻略

姿势一、通过文件管理器上传WebShell 第一步&#xff1a;进入后台&#xff0c;找到文件管理器上传木马文件 第二步&#xff1a;使用蚁剑进行连接 #文件地址 http://localhost/dedecms/shell.php 姿势二、修改模板⽂件拿WebShell 第一步&#xff1a;修改模板文件&#xff0c;删除…...

数据集获取

sklearn数据集 sklearn有四部分数据。其中sklearn的数据集有两部分真实的数据,一部分嵌入到了sklearn库中,即安装好sklearn后就自带了一部分数据,这些数据的规模比较小称为small toy datasets ,还有一部分数据是需要在网上下载的,sklearn提供了下载的api接口,这些数据规…...

实验12深度学习

实验12深度学习 一、实验目的 &#xff08;1&#xff09;理解并熟悉深度神经网络的工作原理&#xff1b; &#xff08;2&#xff09;熟悉常用的深度神经网络模型及其应用环境&#xff1b; &#xff08;3&#xff09;掌握Anaconda的安装和设置方法&#xff0c;进一步熟悉Jupyte…...

2024年消费者权益数据分析

&#x1f4c5; 2024年315消费者权益数据分析 数据见&#xff1a;https://mp.weixin.qq.com/s/eV5GoionxhGpw7PunhOVnQ 一、引言 在数字化时代&#xff0c;消费者维权数据对于市场监管、商家诚信和行业发展具有重要价值。本文基于 2024年315平台线上投诉数据&#xff0c;采用数…...

零知识证明:区块链隐私保护的变革力量

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

rag-给一篇几百页的pdf,如何从中找到关键信息并汇总出关系图

小思考 对pdf肯定要做模糊chunk&#xff0c;能用模型切分就用模型切分&#xff0c;不能用模型就用规则&#xff0c;规则要尽可能保存连续文本&#xff0c;特殊数据格式&#xff08;图、表格&#xff09;必须完整保存&#xff0c;必须能被捕捉到。这些独立的表格or图数据&#…...

Rust语言学习

Rust语言学习 通用编程概念所有权所有权引用和借用slice struct(结构体)定义并实例化一个结构体使用结构体方法语法 枚举 enums定义枚举match控制流运算符if let 简单控制流 使用包、Crate和模块管理不断增长的项目&#xff08;模块系统&#xff09;包和crate定义模块来控制作用…...

wordPress WooCommerce 本地文件包含漏洞复现(CVE-2025-1661)(附脚本)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…...

【CSS文字渐变动画】

CSS文字渐变动画 HTML代码CSS代码效果图 HTML代码 <div class"title"><h1>今天是春分</h1><p>正是春天到来的日子&#xff0c;花都开了&#xff0c;小鸟也飞回来了&#xff0c;大山也绿了起来&#xff0c;空气也有点嫩嫩的气息了</p>…...

2021-06-15 C逆序存入数组的元素

缘由编程&#xff0c;逆序存入数组的元素_编程语言-CSDN问答 #define N 7 main() { static int a[N]{12,9,16,5,7,2,l},k,s; for(k0;k<N;k) Printf("%4d",a[k]);for (k0;k<N/2; k) {sa[k]; a[k]a[N-1-k]; a[N-1-k]s; } for (k0;k<N;k) Printf("%4…...

Qt 控件概述 QLabel

目录 QLabel显示类控件 label如何做到与窗口同步变化 边框 Frame QLabel显示类控件 ​​ ​​ textFormat &#xff1a;设置文件格式 ​ Pixmap &#xff1a;标签图片 label如何做到与窗口同步变化 Qt中对应用户的操作 &#xff1a; 事件和信号 拖拽窗口大小就会触发…...

k8s服务中userspace,iptables,和ipvs的比较

在 Kubernetes 中&#xff0c;kube-proxy 是负责实现服务负载均衡的组件。它支持三种代理模式&#xff1a;userspace、iptables 和 ipvs。这三种模式在性能、功能和复杂性上有所不同。以下是它们的详细比较&#xff1a; 1. Userspace 模式 Userspace 是 Kubernetes 最早支持的…...

Vue 渲染 LaTeX 公式 Markdown 库

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…...

KMP-子串匹配算法-关键点理解

1.理解next[]数组的使用与来历 2.求解next[]数组 一、kmp算法的原理 首先观察暴力解法&#xff1a;假设主串为&#xff1a;abdxxabc&#xff0c;模式串为abxxabd。 暴力解法&#xff0c;就是对主串每个字符作为第一个字符&#xff0c;开始和模式串比较。 比如&#xff1a;从…...