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