跳转到主内容
极星编程网:以代码为星,赴技术山海!

Java如何开发一个控制台版超市收银系统_逻辑处理与报表输出

怎么用
Scanner
安全读取用户输入而不卡死 控制台系统最常卡在输入环节——比如用户输了个字母,
nextInt()
直接抛
InputMismatchException
,后续所有
nextLine()
都读不到新内容。这不是 bug,是
Scanner
缓冲区残留换行符导致的。 永远优先用
nextLine()
读字符串,再手动转类型(
Integer.parseInt()
),别混用
nextInt()
+
nextLine()
捕获
NumberFormatException
比捕获
InputMismatchException
更直接,也更容易提示“请输入数字” 读完每行后,别假设缓冲区干净;需要跳过残留时,加一句
scanner.nextLine()
(但只在明确知道有残留时才加) 商品价格和数量怎么存才不会算错小数 用
float
或
double
存价格,迟早遇到
0.1 + 0.2 == 0.30000000000000004
这种问题。收银系统里,分是基本单位,必须精确。 价格统一用
int
存“分”,比如 19.99 元存成
1999
;显示时再除以
100.0
格式化 如果非要显示带两位小数的字符串,用
String.format("%.2f", value)
,别用
DecimalFormat
(它受 locale 影响,中文环境可能输出逗号) 计算总价、找零时全程用
long
累加,避免溢出(万件商品 × 万元单价仍安全) 日报表怎么导出到文件又不被中文乱码搞崩 用
FileWriter
直接写中文,Windows 记事本打开大概率是乱码——因为默认用平台编码(GBK),而 Java 字符串是 UTF-16,中间没指定编码就隐式转了。 改用
OutputStreamWriter
+
FileOutputStream
,显式指定
"UTF-8"
编码 文件名别含特殊符号(如
/
、
:
),否则
new File("2024-06-15_销售报表.txt")
可能创建失败 报表内容按列对齐?别硬拼空格,用
String.format("%-10s %-8d %8d", name, count, amount)
更稳 为什么每次重启程序商品数据就没了 控制台系统没数据库,但也不能把商品列表写死在代码里。硬编码 = 每改一次商品就得重编译,用户根本没法自己维护。 Eclipse导入Android或其他的JAVA项目的正确方法 WORD版 本文档主要讲述的是Eclipse导入Android或其他的JAVA项目的正确方法;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看 下载 立即学习 “ Java免费学习笔记(深入) ”; 用纯文本配置:每行一个商品,格式如
苹果,500,850
(名称,库存,单价分),启动时用
Files.readAllLines(Paths.get("goods.txt"))
加载 保存操作(如库存变动)必须同步写回文件,且要用
StandardOpenOption.WRITE
+
StandardOpenOption.CREATE
,别用
FileWriter
覆盖——它会清空原文件再写,万一中途崩溃就丢数据 别忘了加
try-with-resources
,否则文件句柄泄漏,跑两天就报
IOException: Too many open files
真正麻烦的不是写功能,是让用户改配置时不手抖——比如多打个空格、少个逗号,解析时就
ArrayIndexOutOfBoundsException
。得在加载逻辑里加字段校验,而不是等结账时报错才让用户回头翻文件。

相关文章