Java作业:用循环实现二手书店书籍类型输入及费用计算指导
二手书店收据程序实现指导
当前代码的核心偏差
你现在的代码没有匹配“逐本读取捐赠/购书类型并累计金额”的要求:现有的循环仅完成了捐赠数量的合法性校验,只输入1次书籍类型就直接进入后续流程,没有对应每本书的类型读取逻辑,购买模块更是完全缺失逐本输入类型、累计费用的环节。
分环节逻辑梳理(强制符合循环使用要求)
捐赠模块改造
- 保留现有捐赠数量校验的
do-while循环:仅用于判断用户输入的捐赠数量是否为非负整数,非法值要求重新输入,直到拿到合法的numBooksDonated再继续流程 - 拿到合法捐赠数量后,新增一个按捐赠次数计数的循环:
- 循环总次数和
numBooksDonated完全一致,每循环一次对应处理一本捐赠书 - 每轮循环中提示用户输入当前书籍的类型(H/P),可加简单校验:如果输入值不是H/P,提示重新输入当前书籍类型,直到拿到合法值
- 拿到合法类型后,直接将对应授信累加至
totalCredits:精装书累加常量HARDBACKDONATION,平装书累加常量PAPERBACKDONATION,无需单独存储每本书的类型值
- 循环总次数和
购买模块补全
- 参照捐赠模块的流程1:1实现即可:
- 先写一段和捐赠数量校验逻辑完全一致的
do-while循环,读取用户输入的购买书籍数量,校验为非负整数后再继续,非法值要求重输,拿到合法的numBooksPurchased - 拿到合法购买数量后,同样新增一个按购买次数计数的循环,逐本读取每本购买书籍的类型(H/P),校验类型合法性后,将对应书价累加至
purchaseTotal:精装书累加常量COSTHARDBACK,平装书累加常量COSTPAPERBACK
- 先写一段和捐赠数量校验逻辑完全一致的
易踩坑提醒
- 不要把单本类型的输入逻辑放在最外层的数量校验循环里,必须等总数量确认合法后,再开独立循环逐本收类型,不然不管捐多少本书,只会读1次类型
- 每次用
nextInt()读取整数后,记得用input.nextLine()清空键盘缓冲区的换行符,避免后续读取字符串时直接读到空值 - 最后计算应缴金额时,直接用已累加好的
purchaseTotal减去totalCredits就是客户本次需要支付的总金额,逻辑直接复用你现在写的visitTotal计算式即可
内容的提问来源于stack exchange,提问作者Mar
相关产品推荐
相关产品推荐

