14.text--学生类

学生类

定义一个长度为3的数组,数组存储1-3名学生对象作为初始数据,学生对象的学号,姓名各不相同
学生的属性:学号、姓名、年龄
要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断
要求2:添加完毕之后,遍历所有学生信息
要求3:通过ID删除学生信息
如果存在,则删除,如果不存在,则提示删除失败
要求4:删除完毕之后,遍历所有学生信息
要求5:查询数组id为“heima002”的学生,如果存在,则将他的年龄+1岁

因为要求复杂,所以分成了三个测试类,分别完成各个要求

1.JavaBean:

//学生对象
public class Student {
    private String id;
    private String name;
    private int age;

    public Student() {
    }

    public Student(String id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public String getId() {
        return id;
    }

    public void setId(String 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;
    }
}

2.Test1

//要求1、要求2
public class StudentTest01 {
    public static void main(String[] args) {
        Student[] arr = new Student[3];

        Student s1 = new Student("heima001","周健",22);
        Student s2 = new Student("heima002","杨伟楠",24);
        Student s3 = new Student("heima003","彭成思",24);

        arr[0] = s1;
        arr[1] = s2;
        arr[2] = s3;

        //要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断
        Student s4 = new Student("heima002","丁郎平",21);

        //唯一性判断,调用方法实现
        boolean flag = contains(s4.getId(), arr);
        if(flag){
            //id存在于数组中 --- 已存在 --- 不用添加
            System.out.println("当前id重复,请修改id后再进行添加");
        }else{
            //id不存在于数组中 --- 不存在 --- 就可以把学生对象添加到数组中
            //获取数组元素个数,调用方法实现
            int count = getCount(arr);
            //根据数组元素个数,满了则无法添加只能创建新数组,未满则直接添加
            if(count == arr.length){
                //1.数组已经存满 --- 只能创建一个新数组 --- 调用方法实现
                Student[] newArr = createNewArr(arr);
                newArr[count] = s4;

                //要求2:添加完毕之后,遍历所有学生信息,调用方法实现
                print(newArr);
            }else{
                //2.数组没有存满 --- 直接添加,此时的count相当于数组中,存在空值位置的索引
                arr[count] = s4;

                //要求2:添加完毕之后,遍历所有学生信息,调用方法实现
                print(arr);
            }
        }




    }

    //返回值选布尔值,因为是比较是否存在的方法,存在true or 不存在false
    public static boolean contains(String id,Student[] arr){
        for (int i = 0; i < arr.length; i++) {
            Student student = arr[i];
            if(student != null && id == student.getId()){
                    return true;
            }
        }
        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 print(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());
            }
        }
    }
}

3.Test2

//要求3、要求4
public class StudentTest02 {
    public static void main(String[] args) {
        Student[] arr = new Student[3];

        Student s1 = new Student("heima001","周健",22);
        Student s2 = new Student("heima002","杨伟楠",24);
        Student s3 = new Student("heima003","彭成思",24);

        arr[0] = s1;
        arr[1] = s2;
        arr[2] = s3;

        //要求3:通过ID删除学生信息
        //如果存在,则删除,如果不存在,则提示删除失败

        //要找到id在数组中对应的索引
        int index = getIndex("heima002",arr);

        //进行判断是否存在 index?0
        if(index >= 0){
            //存在,删除信息
            arr[index] = null;
            //要求4:删除完毕之后,遍历所有学生信息
            print(arr);
        }else{
            //不存在,删除失败
            System.out.println("当前id不存在,删除失败");
        }


    }

    //定义一个方法,找到id在数组中的索引
    public static int getIndex(String id,Student[] arr){
        for (int i = 0; i < arr.length; i++) {
            Student stu = arr[i];
            if(stu != null){
                String sid = stu.getId();
                if(id == sid){
                    return i;
                }
            }
        }
        return -1;
    }

    //定义一个方法,遍历数组并打印
    public static void print(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());
            }
        }
    }
}

4.Test3

//要求5:查询数组id为“heima002”的学生,如果存在,则将他的年龄+1岁
public class StudentTest03 {
    public static void main(String[] args) {
        Student[] arr = new Student[3];

        Student s1 = new Student("heima001","周健",22);
        Student s2 = new Student("heima002","杨伟楠",24);
        Student s3 = new Student("heima003","彭成思",24);

        arr[0] = s1;
        arr[1] = s2;
        arr[2] = s3;

        //获取id对应的数组索引,调用方法实现
        int index = getIndex("heima002",arr);

        //判断索引,决定是否执行操作
        if(index >= 0){
            //存在,则按要求对年龄+1
            Student stu = arr[index];
            int newAge = stu.getAge() + 1;
            stu.setAge(newAge);

            print(arr);
        }else{
            //不存在,则提示错误
            System.out.println("当前id不存在,修改失败");
        }
    }

    //定义一个方法,获取id对应的数组索引
    public static int getIndex(String id,Student[] arr){
        for (int i = 0; i < arr.length; i++) {
            Student stu = arr[i];
            if(stu != null){
                String sid = stu.getId();
                if(id == sid){
                    return i;
                }
            }
        }
        return -1;
    }

    //定义一个方法,遍历数组并打印
    public static void print(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());
            }
        }
    }
}
posted on 2023-03-29 09:52  小黑确实不黑  阅读(23)  评论(0编辑  收藏  举报