50.面向对象进阶训练-学生类
//定义一个长度为3的数组,存储1-3名学生对象作为初始数据 //学生属性:学号 姓名 年龄,其中学号姓名各不相同 //要求:1.再次添加一个学生对象,并在添加的时候进行学号的唯一性判断//2.添加完毕之后,遍历所有学生信息//3.通过id删除学生信息(若存在就删除,若不存在则提示删除失败)//4.删除完毕之后,遍历所有学生信息//5.查询数组id为“2”的学生,如果存在则将他的年龄增加一岁
public class Student {//定义一个长度为3的数组,存储1-3名学生对象作为初始数据//学生属性:学号 姓名 年龄,其中学号姓名各不相同//要求:1.再次添加一个学生对象,并在添加的时候进行学号的唯一性判断//2.添加完毕之后,遍历所有学生信息//3.通过id删除学生信息(若存在就删除,若不存在则提示删除失败)//4.删除完毕之后,遍历所有学生信息//5.查询数组id为“2”的学生,如果存在则将他的年龄增加一岁private int id;private String name;private int age;public Student() {}public Student(int id, String name, int age) {this.id = id;this.name = name;this.age = age;}public int getId() {return id;}public void setId(char id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
测试类:
public class StudentTest {public static void main(String[] args) {//1.创建数组Student[] arr = new Student[3];//2.创建学生对象Student s1 = new Student(001, "张三", 20);Student s2 = new Student(002, "李四", 21);Student s3 = new Student(003, "王五", 22);//3.把学生对象添加到数组中arr[0] = s1;arr[1] = s2;arr[2] = s3;//要求 1.再次添加一个学生对象,并在添加的时候进行学号的唯一性判断Student s4 = new Student(004, "赵六", 25);boolean flag = contains(arr, s4.getId());if (flag) {//已存在--不用添加System.out.println("当前id重复,请修改后添加");} else {//不存在--把新学生添加进数组中int count = getCount(arr);if (count == arr.length) {//已经存满,需创建一个新的数组,长度为老数组+1Student[] newArr = createNewArr(arr);newArr[count] = s4;//要求 2:遍历所有学生信息printArr(newArr);} else {//当前没有存满//getCount获取到的值就是需要添加的新元素的索引arr[count] = s4;//要求 2:遍历所有学生信息printArr(arr);}}System.out.println("-------------");//分割线//要求 3:通过id删除学生信息(若存在就删除,若不存在则提示删除失败)int index = getIndex(arr, 1);if(index>=0){//如果存在,则删除,直接变为nullarr[index]=null;//要求 4:遍历所有学生信息printArr(arr);}else{//不存在,提示删除失败System.out.println("当前id不存在,删除失败");}System.out.println("--------------");//分割线//要求 5:查询数组id为“2”的学生,如果存在则将他的年龄增加一岁//首先找到id为002的学生索引int index2=getIndex(arr,2);//判断索引if(index>=0){//存在,将年龄+1Student student = arr[index2];//把原来的年龄拿出来+1int newAge = student.getAge()+1;//再用set方法把年龄放回去student.setAge(newAge);//遍历数组,查看是否修改成功printArr(arr);}else{//不存在System.out.println("当前id不存在");}}public static boolean contains(Student[] arr, int id) {for (int i = 0; i < arr.length; i++) {//依次获取到数组中的每一个学生对象Student s = arr[i];if (s != null) {//再依次获取每位学生的idint sid = s.getId();//比较if (sid == id) {return true;}}}//当循环结束之后,还没有找到一样的,那么就表示要找的id是不存在的return false;}//定义一个方法,判断数组中存了几个元素public static int getCount(Student[] arr) {//定义一个计数器用来统计int count = 0;for (int i = 0; i < arr.length; i++) {if (arr[i] != null) {count++;}}//当循环结束之后,就知道已经存了几个元素return count;}//创建一个新数组,长度为老数组长度+1,然后把老数组元素放到新数组当中public static Student[] createNewArr(Student[] arr) {Student[] newArr = new Student[arr.length + 1];//遍历得到老数组中的每一个元素for (int i = 0; i < arr.length; i++) {//把元素添加到新数组中newArr[i] = arr[i];}return newArr;}//定义一个打印数组的方法public static void printArr(Student[] arr) {for (int i = 0; i < arr.length; i++) {Student s = arr[i];if (s != null)System.out.println(s.getId() + ", " + s.getName() + ", " + s.getAge());}}//找到id在数组中的索引public static int getIndex(Student[] arr,int id){for (int i = 0; i < arr.length; i++) {//依次得到每一个学生对象Student s=arr[i];//对s进行非空判断if (s!=null){int sid=s.getId();if(sid==id){return i;}}}//当循环结束之后,还没找到对应的索引就表示不存在return -1;//-1表示不存在}
}
运行结果: