0

0

怎么用Java写一个简单的控制台快递柜提取系统_Map存储逻辑

P粉602998670

P粉602998670

发布时间:2026-03-11 11:21:18

|

588人浏览过

|

来源于php中文网

原创

hashmap最适合快递柜格口与取件码映射:键为string取件码,值为string格口编号,需校验6位纯数字、避免前导零丢失、预设容量、取件后置"taken"标记或删除键,并统一用nextline().trim()处理输入。

怎么用java写一个简单的控制台快递柜提取系统_map存储逻辑

HashMap 存快递柜格口和取件码最直接

Java 里没有“快递柜专用数据结构”,但 HashMap<string string></string> 足够覆盖核心需求:用取件码(String)查格口编号(StringInteger),或反过来用格口查码。别用 TreeMap,除非你真需要按取件码字典序遍历——实际业务里几乎不需要。

常见错误是把格口编号当 int 存、取件码当 int 存,结果遇到 "00123" 这种带前导零的码直接变 123,取件时对不上。必须统一用 String

  • HashMap<string string></string>:键 = 取件码,值 = 格口编号(如 "A05"
  • 存入前校验取件码长度是否为 6 位、是否全数字(可选,但建议)
  • 避免用 new HashMap() 后不设初始容量——如果预估要存 100 个格口,直接写 new HashMap(128),省得扩容搬数据

取件时怎么防重复提取和过期

HashMap 不带时间戳和状态标记,所以不能只靠它判断“是否已取”。得加一层逻辑:取件成功后,要么删掉这个键值对,要么把值改成 "TAKEN" 这类标记字符串。

删键最简单,但没法查历史;留标记能查,但得在每次 get() 后手动判断值是不是 "TAKEN"。别用布尔值做值类型——会和格口编号类型不一致,强制转型容易崩。

立即学习Java免费学习笔记(深入)”;

Moshi Chat
Moshi Chat

法国AI实验室Kyutai推出的端到端实时多模态AI语音模型,具备听、说、看的能力,不仅可以实时收听,还能进行自然对话。

下载
  • 取件流程:先 map.get(inputCode) → 拿到格口 → 再 map.put(inputCode, "TAKEN")
  • 如果格口被占(比如别人刚取走),get() 返回 null"TAKEN",就该提示“取件码无效或已领取”
  • 不建议在 HashMap 里塞 LocalDateTime 做超时——没定时清理机制,超时判断得靠取件时比对当前时间,逻辑得写在业务层

控制台交互别卡死,输入要清空缓冲区

Scanner 读取取件码时,如果之前用过 nextInt()nextLine() 混用,很容易漏掉第一行输入——因为换行符留在缓冲区里,nextLine() 直接读到空串。

所有输入统一用 scanner.nextLine(),哪怕你要的是数字,也先读成 String,再用 Integer.parseInt() 转。这样稳。

  • 输入取件码后,立刻用 trim() 去首尾空格:scanner.nextLine().trim()
  • 用户输错三次,别直接退出,用 continue 回到主循环开头,保持控制台活着
  • 别在循环里反复 new Scanner(System.in)——资源没关,还可能出异常

测试时最容易忘的边界情况

本地跑通不代表能上线。真实场景下,用户会输空串、输字母、输超长数字、连续按回车——这些都会让 HashMap.get() 返回 null,但你的提示语如果只写“取件失败”,根本看不出是输错了还是系统崩了。

真正该打日志的地方不是“成功取出”,而是“收到空输入”“收到非6位数字”“查不到该取件码”。控制台程序没日志框架,至少用 System.err.println() 输出这类问题。

  • 取件码长度不是 6 → 提示“请输入6位取件码”
  • map.get() 返回 null → 提示“取件码不存在或已过期”(别暴露内部细节,比如“HashMap里没这个key”)
  • 格口编号返回 "TAKEN" → 提示“该快件已被领取”

格口编号和取件码本质都是业务标识符,别在代码里写死 "A01""123456" 当测试值——抽成常量或配置,不然改一个地方漏十个地方。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1010

2023.08.02

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

254

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

1089

2024.03.01

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1566

2023.10.24

mysql标识符无效错误怎么解决
mysql标识符无效错误怎么解决

mysql标识符无效错误的解决办法:1、检查标识符是否被其他表或数据库使用;2、检查标识符是否包含特殊字符;3、使用引号包裹标识符;4、使用反引号包裹标识符;5、检查MySQL的配置文件等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

209

2023.12.04

Python标识符有哪些
Python标识符有哪些

Python标识符有变量标识符、函数标识符、类标识符、模块标识符、下划线开头的标识符、双下划线开头、双下划线结尾的标识符、整型标识符、浮点型标识符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

322

2024.02.23

java标识符合集
java标识符合集

本专题整合了java标识符相关内容,想了解更多详细内容,请阅读下面的文章。

292

2025.06.11

c++标识符介绍
c++标识符介绍

本专题整合了c++标识符相关内容,阅读专题下面的文章了解更多详细内容。

177

2025.08.07

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 4.3万人学习

C# 教程
C# 教程

共94课时 | 11.1万人学习

Java 教程
Java 教程

共578课时 | 80.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号