对象数组练习

存在问题

1.方法格式忘记如何写了,忘记写static

//1.2学号唯一性判断方法
    //1.2.1干什么? 判断学号的唯一性
    //1.2.2 要什么? 要原来的数组 要添加数据的id
    //1.2.3需要返回值吗? 需要
    public static boolean contain(Student[] arr, int id) {//方法要加static
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] != null) {
                Student stu = arr[i];
                int sid = arr[i].getId();
                if (sid == id) {
                    return true;
                }
            }
        }
        return false;
    }

与构造方法不同之处:构造方法public直接写类名

public Student() {
    }

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

需要记住的知识点

实现

1.题干

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

2.javabean类

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

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

    /**
     * 获取
     * @return id
     */
    public int getId() {
        return id;
    }

    /**
     * 设置
     * @param id
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }
}

3.测试类

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

        //定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同
        Student[] arr = new Student[3];
        Student s1 = new Student(1, "zhangsan", 21);
        Student s2 = new Student(2, "lisi", 22);
        Student s3 = new Student(3, "wangwu", 23);
        arr[0] = s1;
        arr[1] = s2;
        arr[2] = s3;


//要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断***********************************************************************************************************88
        //1.1创建一个学生对象
        Student s4 = new Student(4, "zhaoliu", 24);
        //1.2学号唯一性判断
        //定义一个方法
        boolean flag = contain(arr, s4.getId());
        //重复
        if (flag) {
            //输出id重复
            System.out.println("id重复,请重新输入");
        } else {
            //如果id不重复的话,就把数据存入数组中
            //有两种可能:1.数组未满;2.数组已满
            //所以(判断数组存储了几个数据,因为后面要用到)
            //判断数组存了几个数据定义方法
            int count = grtCount(arr);
            if (count == arr.length) {
                //数组已满,复制到新数组,新数组长度为原来数组长度加一
                //方法实现
                Student[] newArr = creatNewArr(arr);
                newArr[count] = s4;
                //要求2:添加完毕之后,遍历所有学生信息。
                printArr(newArr);

            } else {
                //数组未满直接存
                arr[count] = s4;
                //要求2:添加完毕之后,遍历所有学生信息。
                printArr(arr);
            }
        }
    }


//方法区***************************************************************************************************************************

    //遍历数组
    public static void printArr(Student[] arr) {
        for (int i = 0; i < arr.length; i++) {
            Student stu = arr[i];
            if (stu != null) {
                System.out.println(stu.getId() + "," + stu.getName() + "," + stu.getAge());
            }
        }
    }


    //创建新数组,把原数组数据复制进去
    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 grtCount(Student[] arr) {
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] != null) {
                count++;
            }
        }
        return count;
    }


    //1.2学号唯一性判断方法
    //1.2.1干什么? 判断学号的唯一性
    //1.2.2 要什么? 要原来的数组 要添加数据的id
    //1.2.3需要返回值吗? 需要
    public static boolean contain(Student[] arr, int id) {//方法要加static
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] != null) {
                Student stu = arr[i];
                int sid = arr[i].getId();
                if (sid == id) {
                    return true;
                }
            }
        }
        return false;
    }
}
public class StudentTest3 {
    public static void main(String[] args) {
        /*
        要求3:通过id删除学生信息
        如果存在,则删除,如果不存在,则提示删除失败。
         */


        //定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同
        Student[] arr = new Student[3];
        Student s1 = new Student(1, "zhangsan", 21);
        Student s2 = new Student(2, "lisi", 22);
        Student s3 = new Student(3, "wangwu", 23);
        arr[0] = s1;
        arr[1] = s2;
        arr[2] = s3;


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

        int index = getIndex(arr, 2);
        if (index >= 0) {
            arr[index] = null;//删除数据直接让它指向空就可以
            printArr(arr);
        } else {
            System.out.println("该id不存在,删除失败");
        }


    }

    //***************************************************************************************
    public static int getIndex(Student[] arr, int id) {
        for (int i = 0; i < arr.length; i++) {
            Student stu = arr[i];
            if (arr[i] != null) {
                if (stu.getId() == id) {
                    return i;
                }
            }
        }
        return -1;//如果索引不存在返回-1
    }



    //遍历数组
    public static void printArr(Student[] arr){
        for (int i = 0; i < arr.length; i++) {
            Student stu = arr[i];
            if (stu!=null){
                System.out.println(stu.getId()+","+stu.getName()+","+ stu.getAge());
            }

        }
    }
}

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

        //定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同
        Student[] arr = new Student[3];
        Student s1 = new Student(1, "zhangsan", 21);
        Student s2 = new Student(2, "lisi", 22);
        Student s3 = new Student(3, "wangwu", 23);
        arr[0] = s1;
        arr[1] = s2;
        arr[2] = s3;


        int index = getIndex(arr, 2);
        if (index >= 0) {
            int age = arr[index].getAge();
            int newAge = age + 1;
            arr[index].setAge(newAge);
            printArr(arr);
        } else {
            System.out.println("当前索引不存在,修改失败");
        }
    }


    //*****************************************************************************************
    //查索引
    public static int getIndex(Student[] arr, int id) {
        for (int i = 0; i < arr.length; i++) {
            Student stu = arr[i];
            if (arr[i] != null) {
                if (stu.getId() == id) {
                    return i;
                }
            }

        }
        return -1;
    }


    //遍历数组
    public static void printArr(Student[] arr) {
        for (int i = 0; i < arr.length; i++) {
            Student stu = arr[i];
            if (stu != null) {
                System.out.println(stu.getId() + "," + stu.getName() + "," + stu.getAge());
            }

        }
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值