Java实现优惠券兑换糖果口香糖程序计算逻辑问题求助
代码存在的问题
- 变量名不匹配:你定义的存储优惠券数量的变量是
numOfCoupons,计算糖果数量时误用了不存在的变量couponNumbers,会直接导致编译失败。 - 口香糖计算逻辑错误:你当前用糖果数量取模3的逻辑完全不符合兑换规则,没有先计算兑换糖果后剩余的优惠券。
正确计算逻辑
兑换的核心逻辑是优先兑换尽可能多的糖果,再用兑换糖果后剩下的优惠券兑换口香糖:
- 糖果数量 = 优惠券总数 / 10 (整数除法自动取整,你这部分的逻辑思路是对的,只需要修正变量名即可)
- 兑换糖果后剩余的优惠券 = 优惠券总数 % 10
- 口香糖数量 = 剩余优惠券 / 3 (同样用整数除法取整)
修正后完整代码
import java.util.Scanner; public class CouponRedeem { public static void main(String[] args) { int candies, gumballs, numOfCoupons; Scanner scan = new Scanner(System.in); System.out.println("Enter number of coupons:"); numOfCoupons = scan.nextInt(); scan.close(); candies = numOfCoupons / 10; // 计算兑换糖果后剩余的优惠券 int leftAfterCandy = numOfCoupons % 10; gumballs = leftAfterCandy / 3; System.out.println("Number of Candies: " + candies); System.out.println("Number of Gumballs: " + gumballs); // 如需展示最终无法兑换的优惠券,可补充输出 leftAfterCandy % 3 } }
效果验证
- 输入64:糖果=6,兑换糖果后剩余4张优惠券,口香糖=1,和你给出的示例2输出完全一致
- 输入7:糖果=0,剩余7张优惠券,口香糖=2,符合小于10大于等于3时仅输出口香糖的要求
- 输入2:糖果=0,口香糖=0,无可用兑换
内容的提问来源于stack exchange,提问作者Nifi
相关产品推荐
相关产品推荐

