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
相关产品推荐
相关产品推荐

