用二维数组实现图书库存管理,适合Java初学者:以String[][]存储书名、作者、ISBN和库存(字符串转int),通过索引操作完成增删查改,配合计数器和异常处理提升健壮性。

用二维数组实现图书库存管理,适合初学 Java 的练习项目,核心是用数组模拟数据存储,重点在于理解索引操作和基础逻辑控制。
设计图书信息结构
每本图书需要记录基本信息:书名、作者、ISBN、库存数量。二维数组的行代表不同图书,列代表字段。推荐使用 String[][] 存储前四项(均为字符串类型),库存数量可转为整数处理;或统一用 Object[][] 混合类型,更灵活但需类型转换。
- 示例结构:bookDB[0][0] = "Java编程思想",bookDB[0][1] = "Bruce Eckel",bookDB[0][2] = "978-7-XX-XXXXXX-X",bookDB[0][3] = "45"
- 初始化时预设容量(如 10 行),避免频繁扩容;实际项目中应配合计数器记录当前有效图书数
实现增删查改基本功能
所有操作围绕二维数组下标展开,不依赖集合类,强调手动遍历与条件判断。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 添加图书:查找第一个空行(如第一列为空字符串),填入新数据;若无空行提示“库存已满”
- 按ISBN查询:遍历每一行,比对 bookDB[i][2] 是否等于目标 ISBN,找到则打印全部字段,未找到返回提示
- 修改库存:先查到对应图书行号,更新第 3 列(库存)值,注意字符串与 int 转换:Integer.parseInt(bookDB[i][3]) + 新增量
- 删除图书:将目标行数据清空(如设为 null 或空字符串),后续查询跳过空行即可;真实场景需数组收缩,此处可暂不处理
增强交互与容错处理
命令行界面需清晰引导用户,同时防范常见异常,比如输入空值、非法数字、越界访问。
立即学习“Java免费学习笔记(深入)”;
- 使用 Scanner 输入后,用 trim().isEmpty() 判断空输入,避免 NullPointerException
- 库存增减操作前,用 try-catch 包裹 Integer.parseInt(),捕获 NumberFormatException 并提示“请输入有效数字”
- 显示全部图书时,只遍历有效行(根据计数器或非空判断),避免打印 null 或乱码
局限性与进阶方向
二维数组方案简单直观,但硬编码维度、缺乏扩展性、无法持久化是明显短板。
- 当前无法保存数据到文件,重启程序即丢失;可补充 FileWriter / Scanner 实现简易文本存取
- 不支持按书名模糊搜索、多条件排序等功能;后续可用 ArrayList
封装对象,配合 Stream 或 Collections 工具 - 并发安全、图形界面、数据库对接等属于更高阶段内容,本练习聚焦数组逻辑与流程控制


















