添加学生信息到普通班级问题
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;
第一次可以识别到在主列表中,第二次为什么就不行了
4
收起
正在回答
1回答
同学你好,代码中存在的问题如下:
当执行像班级添加学生的循环for (Student s : mainStuList) 时,从循环只会循环执行一次,也就是说添加进班级的元素只会和第一个元素进行比较,若与第一个元素id相同则直接添加并跳出循环,若与第一个元素的id不同则会执行else分支继续输入学生姓名信息后添加并跳出循环,故会导致上述截图中的运行结果。
修改建议:
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 星