//获取团队中已有的架构师,设计师,程序员的人数
int numOfArch = 0,numOfDes = 0,numOfPro = 0;
for(int i = 0;i < total;i++) {
if(team[i] instanceof Architect) {
numOfArch++;
}else if(team[i] instanceof Designer) {
numOfDes++;
}else if(team[i] instanceof Programmer) {
numOfPro++;
}
}
if(p instanceof Architect) {
if(numOfArch >= 1) {
throw new TeamException("已有架构师一名");
}
}else if(p instanceof Designer) {
if(numOfDes >= 2) {
throw new TeamException("已有设计师二名");
}
}else if(p instanceof Programmer) {
if(numOfPro >= 3) {
throw new TeamException("已有程序员三名");
}
}
//if(p instanceof Architect && numOfArch >= 1){
// throw new TeamException("已有架构师一名");
// }else if(p instanceof Designer && numOfDes >= 2) {
// throw new TeamException("已有设计师二名");
// }else if(p instanceof Programmer && numOfPro >= 3) {
// throw new TeamException("已有程序员三名");
// }
同样是判断团队中是否人数够,为什么下面我注释的那个方法就不行,比如我先添加两个设计师再添加一个架构师上面运行就没问题,下面就报已有设计师两名异常
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- CSDN专家-link 2022-04-22 10:29关注
两段代码完全不同的啊。
第一段代码,if...else的条件是新加入的人的职位是什么。
第二段代码,if...else的条件是新加入的人的职位以及该职位的人数。
当你新加入架构师时,第一段程序会进行 if(p instanceof Architect) 函数段,不会进入另外两个else函数段。但第二段程序,由于架构师还没有,所以不会进入第一个if,会判断第二个else if。为什么第二个else if会成立,应该是你的类继承关系的原因吧。架构师的父类是设计师,设计师父类是程序员,所以p如果是架构师,同时它也满足是设计师,也满足是程序员本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
- ¥30 关于<main>标签页面跳转的问题
- ¥80 部署运行web自动化项目
- ¥15 腾讯云如何建立同一个项目中物模型之间的联系
- ¥30 VMware 云桌面水印如何添加
- ¥15 用ns3仿真出5G核心网网元
- ¥15 matlab答疑 关于海上风电的爬坡事件检测
- ¥88 python部署量化回测异常问题
- ¥30 酬劳2w元求合作写文章
- ¥15 在现有系统基础上增加功能