添加学生信息到普通班级问题

添加学生信息到普通班级问题

case 2的代码

case 2:
                                // 添加学生信息到普通班级
                                System.out.println("添加学生信息到普通班级");
                                System.out.println("请输入要添加的班级名称");
                                String banJiName2 = sc.next();
                                Banji tempBanji2 = school1.searchByName(banJiName2);
                                if (tempBanji2 == null) {
                                    System.out.println("未查询到此班级");
                                } else {
                                    int cnt2;
                                    while (true) {
                                        try {
                                            System.out.println("请输入要添加的学生个数:");
                                            cnt2 = sc.nextInt();
                                            break;
                                        } catch (Exception e) {
                                            System.out.println("请输入正确的数字!");
                                            sc.next();
                                            continue;
                                        }
                                    }
                                    for (int i = 0; i < cnt2; i++) {
                                        System.out.println("请输入第" + (i + 1) + "个学生信息");
                                        System.out.println("请输入要添加的学生id");
                                        String stuId2 = sc.next();
                                        String stuName2;
                                        // 判断主列表是否存在
                                        if (mainStuList.isEmpty()) {
                                            System.out.println("该学生信息在主学生列表中不存在,请输入学生的其他信息");
                                            System.out.println("请输入要添加的学生姓名");
                                            stuName2 = sc.next();
                                            Student tempStu = new Student(stuId2, stuName2);
                                            tempBanji2.addStudent(tempStu);
                                            System.out.println("添加成功");
                                            mainStuList.add(tempStu);
                                            continue;
                                        }
                                        for (Student s : mainStuList) {
                                            // 在学生主列表中存在,直接添加
                                            if (s.getStuNum().equals(stuId2)) {
                                                tempBanji2.addStudent(s);
                                                System.out.println("添加成功");
                                                break;
                                            } else {
                                                System.out.println("该学生信息在主学生列表中不存在,请输入学生的其他信息");
                                                System.out.println("请输入要添加的学生姓名");
                                                stuName2 = sc.next();
                                                Student tempStu = new Student(stuId2, stuName2);
                                                //同时添加到主列表中
                                                mainStuList.add(tempStu);
                                                // 添加到班级中
                                                tempBanji2.addStudent(tempStu);
                                                System.out.println("添加成功");
                                                break;
                                            }
                                        }
                                    }
                                    System.out.println("主学生列表");
                                    for (Student s : mainStuList) {
                                        System.out.println(s);
                                    }
                                    System.out.println(tempBanji2.getClassName() + "班级列表");
                                    for (Student s : tempBanji2.getStuList()) {
                                        System.out.println(s);
                                    }
                                }
                                break;


第一次可以识别到在主列表中,第二次为什么就不行了

正在回答

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

1回答

同学你好,代码中存在的问题如下:

当执行像班级添加学生的循环for (Student s : mainStuList) 时,从循环只会循环执行一次,也就是说添加进班级的元素只会和第一个元素进行比较,若与第一个元素id相同则直接添加并跳出循环,若与第一个元素的id不同则会执行else分支继续输入学生姓名信息后添加并跳出循环,故会导致上述截图中的运行结果。

https://img1.sycdn.imooc.com//climg/62a068e8098029e909890647.jpg

修改建议:

1、建议上传代码时选中左上角正确的代码语言哦,

2、定义一个学生变量stu1,判断集合中是否存在输入id的学生,并将判断结果存储到stu1中,再根据stu1的结果进行下一步操作,代码参考实现如下:

Student stu1 = null;
for (Student s : mainStuList) {
    // 判断是否在主学生列表中
    if (s.getStuNum().equals(stuId2)) {
        stu1 = s;
        break;
    }
}
if (stu1 != null) {
    tempBanji2.addStudent(s);
    System.out.println("添加成功");
} else {
    System.out.println("该学生信息在主学生列表中不存在,请输入学生的其他信息");
    System.out.println("请输入要添加的学生姓名");
    stuName2 = sc.next();
    Student tempStu = new Student(stuId2, stuName2);
    //同时添加到主列表中
    mainStuList.add(tempStu);
    // 添加到班级中
    tempBanji2.addStudent(tempStu);
    System.out.println("添加成功");
}

祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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