xzdjsnb 2022-04-22 22:50 采纳率: 92.2%
浏览 50
已结题

学完异常之后,出现了以下看题时的困惑,如果抛完异常就是结束方法那么请看我上一个问题,抛完异常后还在执行后面的else if

找到memberId都能理解接下来怎么运行,没找到那后面的覆盖循环我觉得也能执行,在这里我假如total=3在第一个遍历循环中没找到那么就是i=3结束循环抛完异常后继续执行下个循环,我感觉就能报角标越界或者空指针异常,但是这里运行起来没问题


public void removeMember(int memberId) throws TeamException {
        int i = 0;
        for(;i < total;i++) {
            if(team[i].getMemberId() == memberId) {
                team[i].setStatus(Status.FREE);
                break;
            }
        }
        //未找到memberId的情况
        if(i == total) {
            throw new TeamException("未找到memberId的员工,删除失败");
        }
        //后一个元素覆盖前一个元素,实现删除
        for(int j = i + 1;j < total;j++) {
            team[j - 1] = team[j];
        }
  • 写回答

4条回答 默认 最新

  • 关注

    代码没什么问题啊
    你如果未找到memberId的情况,上一个循环是正常结束, 循环之后i会等于total,执行 throw 抛出异常就跳出函数了, 之后的删除元素循环就不执行了.
    如果找到memberId的情况,上一个循环是用break结束, 循环之后i不等于total,就不执行 throw 了, 这时才执行删除元素的循环.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月2日
  • 已采纳回答 4月24日
  • 创建了问题 4月22日

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭