定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。

 学生的属性:学号,姓名,年龄。

  要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。

  要求2:添加完毕之后,遍历所有学生信息。

 

package com.zhao.test4;

public class Student {
    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(int 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;
    }
}
package com.zhao.test4;

public class StudentTest {
    /*定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。
    学生的属性:学号,姓名,年龄。
    要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。
    要求2:添加完毕之后,遍历所有学生信息。*/

    public static void main(String[] args) {
        //创建一个数组用于存储最多三名学生的数据
        Student[] stuArr = new Student[3];
        //创建学生对象,并添加到数组中
        //在括号中用快捷键ctrl+P查看有参构造内容
        Student stu1 = new Student(1, "张三", 18);
        Student stu2 = new Student(2, "李四", 19);
        Student stu3 = new Student(3, "王五", 20);

        stuArr[0] = stu1;
        stuArr[1] = stu2;
        stuArr[2] = stu3;
        //需求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。
        Student stu4 = new Student(4, "赵六", 21);
        //唯一性判断
        //先判断,如果判断重复就不用添加了
        //写一个方法去判断唯一性,返回true或false来进行下一步
        boolean flag = isOnly(stuArr, stu4.getId());
        if (flag) {
            //不重复,将学生添加到数组中
            //数组已满——创建一个新数组,数组长度=老数组长度+1
            //数组未满——直接添加
            //写一个方法去判断数组是否存满,用于进行下一步
            int count = getArrCount(stuArr);
            //当使用getArrCount方法时,如果数组未满
            //那么得到的count同时数组[count]的位置也是下一个数据填入的位置
            if (count == stuArr.length) {
                //数据已存满
                //写一个方法用于创建新数组
                Student[] newStuArr = newStuArr(stuArr);
                //将新数据存入到数组的最后一位
                newStuArr[count] = stu4;
                //需求2:添加完后遍历新数组
                printArr(newStuArr);
            } else {
                //数据未存满,直接添加
                stuArr[count] = stu4;
                //需求2:添加完后遍历数组
                printArr(stuArr);
            }

        } else {
            System.out.println("当前id已存在,请重新输入!");
        }

}

    //写一个方法去判断唯一性,返回true或false来进行下一步
    public static boolean isOnly(Student[] stu, int id) {
        for (int i = 0; i < stu.length; i++) {
            if (stu[i] != null) {
                if (stu[i].getId() == id) {
                    return false;
                }
            }
        }
        return true;
    }

    //写一个方法去比较数组是否存满,用于进行下一步
    public static int getArrCount(Student[] stu) {
        int count = 0;
        for (int i = 0; i < stu.length; i++) {
            if (stu[i] != null) {
                count++;
            }
        }
        return count;
    }

    public static Student[] newStuArr(Student[] stuArr) {
        //创建一个新数组,数组长度是老数组的长度+1
        Student[] newStuArr = new Student[stuArr.length + 1];
        //拷贝老数组到新数组中
        for (int i = 0; i < stuArr.length; i++) {
            newStuArr[i] = stuArr[i];
        }
        return newStuArr;
    }

    //添加完毕后遍历
    public static void printArr(Student[] stuArr) {
        for (int i = 0; i < stuArr.length; i++) {
            Student stu = stuArr[i];
            if (stu != null) {
                System.out.println(stu.getId() + " " + stu.getName() + " " + stu.getAge());
            }
        }
    }
}