java对象数组基础练习---黑马练习之增删改查数组中的对象

student类:


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;
    }
}

要求1、2:增加并遍历

//面向对象数组练习---添加和遍历
//要求1:添加一个学生对象,保证学号唯一性
//要求2:添加完毕之后,遍历所有学生信息
public class Test {
    public static void main(String[] args) {

        Student[] arr = new Student[3];//创建数组存3个学生类对象

        Student s1 = new Student(1,"小王",20);//创建对象
        Student s2 = new Student(2,"小赵",25);
        Student s3 = new Student(3,"小李",26);

        arr[0]=s1;//对象地址存进数组
        arr[1]=s2;
        arr[2]=s3;

        //要求1:添加一个学生对象,保证学号唯一性
        Student s4 = new Student(4,"小孙",27);

        boolean flag = contains(s4.getId(),arr);
        if(flag){//id已存在,不用添加
            System.out.println("当前id重复,请修改id后再进行添加");
        }else {//id不存在,s4添加进数组
            //1.数组已满,创建新数组后添加,新数组长度=老数组+1
            //2.数组未满,直接添加
            int count = getCount(arr);
            if (count==arr.length){//存满了
                Student[] newArr = creatNewArr(arr);
                newArr[newArr.length-1]=s4;

                //要求2:添加完毕之后,遍历所有学生信息
                printArr(newArr);

            }else {//没存满
                //getCount获取到的count值是2,表示数组中已经有2个元素[s1,s2,null]
                //如果下一次要添加数据,就是添加到2索引的位置
                arr[count]=s4;
                //要求2:添加完毕之后,遍历所有学生信息
                printArr(arr);
            }
        }
    }

    //要求2:添加完毕之后,遍历所有学生信息
    public static void printArr(Student[] arr){
        for (int i = 0; i < arr.length; i++) {
            Student student = arr[i];
            if (student!=null){
                System.out.println(student.getId()+" "+student.getName()+" "+student.getAge());
            }
        }
    }

    //创建新数组,长度=老数组+1
    //并把老数组元素拷贝到新数组中
    public static Student[] creatNewArr(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 int getCount(Student[] arr){
        int count =0;//计数
        for (int i = 0; i < arr.length; i++) {
            if (arr[i]!=null){
                count++;
            }
        }
        return count;
    }

    //判断id是否已存在
    public static boolean  contains(int id,Student[] arr){

        for (int i = 0; i < arr.length; i++) {
            Student student = arr[i];
            if (student!=null){
                if (id==student.getId()){//id已存在
                    return true;
                }
            }
        }
        return false;//id不存在
    }
}

要求3、4:删除并遍历

//面向对象数组练习---删除
//要求3:通过id删除学生信息
//要求4:删除后遍历所有学生信息
public class Test2 {
    public static void main(String[] args) {

        Student[] arr = new Student[3];

        Student s1 = new Student(1,"小王",20);
        Student s2 = new Student(2,"小赵",25);
        Student s3 = new Student(3,"小李",26);

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

        //要求3:通过id删除学生信息
        //id存在--删除,id不存在--删除失败
        int index = getIndex(2,arr);

        if (index>=0){//id存在--删除
            arr[index] = null;
            printArr(arr);
        }else {//id不存在--删除失败
            System.out.println("id不存在,删除失败");
        }

    }


    //找到id在数组中的索引
    public static int getIndex(int id,Student[] arr){
        for (int i = 0; i < arr.length; i++) {
            Student student = arr[i];
            if (student!=null){
                if (id==student.getId()){
                    return i;
                }
            }
        }

        return -1;
    }

    //遍历所有学生信息
    public static void printArr(Student[] arr){
        for (int i = 0; i < arr.length; i++) {
            Student student = arr[i];
            if (student!=null){
                System.out.println(student.getId()+" "+student.getName()+" "+student.getAge());
            }
        }
    }

}

要求5:修改

//面向对象数组练习---修改
//要求5:查询id为2的学生,如果存在,将他的年龄+1
public class Teat3 {
    public static void main(String[] args) {
        Student[] arr = new Student[3];

        Student s1 = new Student(1,"小王",20);
        Student s2 = new Student(2,"小赵",25);
        Student s3 = new Student(3,"小李",26);

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

        //要求5:查询id为2的学生,如果存在,将他的年龄+1
        int index = getIndex(2,arr);
        if(index>=0){
            Student student = arr[index];//student:id为2的学生对象
            int newAge = student.getAge()+1;
            student.setAge(newAge);
            printArr(arr);

        }else {
            System.out.println("当前id不存在,修改失败");
        }

    }

    //找到id在数组中的索引
    public static int getIndex(int id,Student[] arr){
        for (int i = 0; i < arr.length; i++) {
            Student student = arr[i];
            if (student!=null){
                if (id==student.getId()){
                    return i;
                }
            }
        }

        return -1;
    }

    //遍历所有学生信息
    public static void printArr(Student[] arr){
        for (int i = 0; i < arr.length; i++) {
            Student student = arr[i];
            if (student!=null){
                System.out.println(student.getId()+" "+student.getName()+" "+student.getAge());
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值