You need to enable JavaScript to run this app. Java作业:用循环实现二手书店书籍类型输入及费用计算指导
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.01 14:36:04