关于添加学生的问题

关于添加学生的问题

首先代码添加学生的代码为:

public void addStudent(Student stu) {
//排除重复添加情况
//判断该学生是否存在
boolean flag=false;
for(Student s:stuList) {
if(s.getStuNum().equals(stu.getStuNum())) { //对象进行比较,如果已存在
flag=true;
break; //返回true,无需添加
}
}
if(flag) {
System.out.println("学生信息已存在,添加失败!");
}else {
stuList.add(stu);
System.out.println("添加成功");
}
}//添加学生方法结束!

在测试中如果出现重复学生信息,直接提示添加失败,不能对此学生信息进行重新录取,这种情况怎么处理啊,老师。目标测试是结果如下:

***************************

**主菜单**

1--班级管理

2--学校管理

0--退出

***************************

请输入对应数字进行列表管理

1

*******************************************************

**班级管理**

1--添加学生信息到主学生列表

2--添加学生信息到普通班级

3--通过学号查询学生信息

4--输入班级语文成绩

5--输入班级数学成绩

6--删除学生信息

6--显示所有学生信息

9--返回上级菜单

*******************************************************

请输入对应数字进行班级列表管理

1

添加学生信息到主学生列表

请输入要添加的学生信息个数:

3

请输入第1个学生的信息

请输入学生的id:

01

请输入学生的姓名:

张三

添加成功

请输入第2个学生的信息

请输入学生的id:

01

请输入学生的姓名:

李四

学生信息已存在,添加失败!

请输入第3个学生的信息

请输入学生的id:

03

请输入学生的姓名:

王五

添加成功

学生信息: [学号:01, 姓名:张三]

学生信息: [学号:03, 姓名:王五]

也就说怎么才可以在添加失败的时候,重复录用第二个学生信息呢?而不是添加第三个信息:

测试类代码:

​	public void test() {
//实例化测试类
TestDemo td=new TestDemo();
Scanner sc=new Scanner(System.in);
//定义3个变量,用来接收菜单数据
int input=0,input1=0,input2=0;
//创建学校对象并实例化
School sch=new School();
//创建班级对象(主学生列表)并实例化
Banji mainBanJi=new Banji("主学生列表:");
//将班级对象添加到学校中,后期在case中再添加学生信息
sch.addBanji(mainBanJi);
//声明其他班级对象信息,后期用来接收其他班级信息
Banji otherBanJi=null;
//进行循环主菜单
while(true) {
td.mainMenu();
System.out.println("请输入对应数字进行列表管理");
//从键盘接收数据,input为控制主菜单列表管理
try {
input=sc.nextInt();
if(input==0) {
break;
}
} catch (InputMismatchException e) {
System.out.println("输入信息有误,只可输入整数,请重新输入!");
sc.next();//接收错误数据
continue;//重新执行本次循环
}
switch(input) {
case 1://班级管理
while(true) {
td.banjiMenu();
System.out.println("请输入对应数字进行班级列表管理");
try {
input1=sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("输入信息有误,只可输入整数,请重新输入!");
sc.next();//接收错误数据
continue;//重新执行本次循环
}
if(input1==9) {
break;
}
switch(input1) {
case 1:
System.out.println("添加学生信息到主学生列表");
System.out.println("请输入要添加的学生信息个数:");
int count=0;
try {
count = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("输入信息有误,只可输入整数,请重新输入!");
sc.next();//接收错误数据
continue;
}
for(int i=1;i<=count;i++) {
System.out.println("请输入第"+i+"个学生的信息");
System.out.println("请输入学生的id:");
String strNum=sc.next();
System.out.println("请输入学生的姓名:");
String strName=sc.next();
//创建学生对象
Student stu=new Student(strNum,strName);
//把学生信息添加到主学生列表
mainBanJi.addStudent(stu);

}
mainBanJi.displayAllStudent();
break;
case 2:
System.out.println("添加学生信息到普通列表");

break;
case 3:
System.out.println("通过学号查询学生信息");
break;
case 4:
System.out.println("输入班级的语文成绩");
break;
case 5:
System.out.println("输入班级的数学成绩");
break;
case 6:
System.out.println("删除学生信息");
break;
case 7:
System.out.println("显示所有学生信息");
break;
default :
System.out.println("输入有误,没有对应的操作");
}
}
break;
case 2://学校管理
while(true) {
td.schoolMenu();;
System.out.println("请输入对应的数字进行学校列表管理");
try {
input2=sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("输入信息有误,只可输入整数,请重新输入!");
sc.next();
continue;
}
if(input2==9) {
break;
}
switch(input2) {
case 1:
System.out.println("向学校中添加班级");
System.out.println("请输入班级编号:");
break;
case 2:
System.out.println("从学校中删除班级");
break;
case 3:
System.out.println("通过班级名称查询班级");
break;
case 4:
System.out.println("对各班语文成绩按平均分进行由大到小排序");
break;
case 5:
System.out.println("对各班数学成绩按平均分进行由大到小排序");
break;
case 6:
System.out.println("显示所有班级名称");
break;
default:
System.out.println("输入有误,没有对应的操作");
}
}
break;
default :
System.out.println("输入有误,没有对应的操作");
}
}
}//方法结束

public static void main(String[] args) {
// TODO Auto-generated method stub
TestDemo t=new TestDemo();
// t.testBanji();
// t.testSchool();
t.test();

}


正在回答 回答被采纳积分+1

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

1回答
好帮手慕阿慧 2021-02-06 17:09:46

同学你好,添加学生方法可以返回flag值,如果flag为true,表示添加失败。如果flag为false,表示添加学生成功。在test()方法中,如果添加学生方法的返回值为true,则i--,让用户重新输入。

参考代码如下:

http://img1.sycdn.imooc.com//climg/601e5cb3099bdf8806960389.jpg

http://img1.sycdn.imooc.com//climg/601e5cd6095fa80204980359.jpg

祝学习愉快~

  • 提问者 rock221 #1
    如果更改为Boolean 返回方法就不符合题了啊
    2021-02-06 20:41:52
  • 好帮手慕阿慧 回复 提问者 rock221 #2

    同学你好,题目中要求:能够完成将学生添加到班级的方法定义,完成该功能即可。将返回值更改为boolean也符合题目。

    祝学习愉快~

    2021-02-07 09:37:35
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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