You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java课程代码校验求助:重复选课校验功能实现问题

解决课程注册重复校验及规则校验问题

看起来你当前的ValidateChoice方法没有正确覆盖所有业务规则,尤其是重复课程的校验逻辑存在明显问题,同时也完全没处理总学分超限的判断。我来帮你完善这个方法:

首先梳理需要实现的校验规则,按优先级排序:

  • 校验课程代码是否在1-7的合法范围内 → 不满足返回-1
  • 校验当前选择的课程是否已被注册(即是否匹配firstChoice/secondChoice/thirdChoice中的任意一个)→ 不满足返回-2
  • 校验新增课程后总学分是否超过9(每门3学分,因此当前总学分+3不能大于9)→ 不满足返回-3
  • 所有规则都符合时返回0

以下是修正后的ValidateChoice方法代码:

public static int ValidateChoice(int choice, int firstChoice, int secondChoice, int thirdChoice, int totalCredit) {
    // 1. 校验课程代码是否在合法范围(1-7)
    if (choice < 1 || choice > 7) {
        return -1;
    }
    
    // 2. 校验是否重复注册同一课程
    // 已注册的课程值为0时代表未选择,而合法课程代码是1-7,无需额外判断0的情况
    if (choice == firstChoice || choice == secondChoice || choice == thirdChoice) {
        return -2;
    }
    
    // 3. 校验总学分是否超过上限9
    if (totalCredit + 3 > 9) {
        return -3;
    }
    
    // 所有校验通过,返回合法标识
    return 0;
}

代码逻辑说明:

  • 课程范围校验:直接判断输入的课程代码是否在1到7之间,不在此区间则返回-1提示无效课程。
  • 重复课程校验:将当前选择的课程代码与已注册的三个课程变量直接对比,只要有匹配就说明重复注册,返回-2。因为第一步已经确保了课程代码是1-7,而未选择的课程变量值为0,所以无需额外排除0的情况,判断逻辑更简洁。
  • 总学分校验:当前总学分加上新选课程的3学分,如果结果大于9,说明超出上限,返回-3阻止注册;如果当前总学分是6,加3后刚好等于9,符合规则,不会触发此判断。

替换你原有的方法后,就能正确处理所有校验规则,包括重复课程的判断了。

内容的提问来源于stack exchange,提问作者Quenten Guiles

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:09:32