为什么添加学生前每次都要for循环?直接根据该专业学生数量定位不好吗

为什么添加学生前每次都要for循环?直接根据该专业学生数量定位不好吗

# 具体遇到的问题

# 报错信息的截图

# 相关课程内容截图
http://img1.sycdn.imooc.com//climg/5fc647dc09a5a9eb07500443.jpg

# 尝试过的解决思路和结果

在这里输入代码,可通过选择【代码语言】突出显示

/**
 * 将学生保存到本专业学生数组中,并更新本专业学生数量
 * @param stu
 */
public void addStudent(Student stu) {
this.getMyStudent()[this.getStudentNum()] = stu;
this.setStudentNum(this.getStudentNum()+1);
}

莫非是为了在【之前的数据有误】的情况下,避免新学生覆盖掉已有的学生,重新计数更新成正确的数据?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,同学的想法是可以的,可以直接添加学生,并修改studentNum值。

如下:

http://img1.sycdn.imooc.com//climg/5fc6f569097e7f3204760093.jpg

weixin_慕斯卡6145207 2020-12-02 05:44:21
​public void addStudent(Student stu) {
this.getMyStudent()[this.getStudentNum()] = stu;
this.setStudentNum(this.getStudentNum()+1);
}

同学,我是这样理解的,这样的操作肯定会出现同一个专业,后一个学生覆盖前一个学生,而且你的学生数量永远都是默认值+1,也就是1个,但是如果for循环后,就是将学生数组目前空置的第一个数组给放上学生对象,然后数量就是i+1,这样,放置的这个学生就是只会出现在数据最后一个,数量还会增加,往采纳!!

  • 提问者 慕侠8439273 #1

    当然不会一直是默认值+1啊,是 学生数量=学生数量+1

    this.setStudentNum(this.getStudentNum()+1);

    这个就相当于i++,其实是个自增操作。


    我这个写法测试出来是能正常计算学生数量的。


    我认为我这个写法的危险性在于,当学生数量因为某种意外原因被改成了错误数值,或者学生数组因为某种意外未按顺序存储,(比如没有用addStudent方法而是直接修改了上述成员),这样的情况下就无法像for循环一样准确找到空位。

    2020-12-02 20:37:57
  • 好帮手慕阿慧 回复 提问者 慕侠8439273 #2

    同学你好,同学的理解是正确的,不会一直是默认值。同学可以直接添加学生。

    祝学习愉快~

    2020-12-03 16:45:06
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师