定义一个长度为3的数组,数组存储3名学生对象作为初始数据,学生对象的学号,姓名各不相同,进行增删改查。

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

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

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

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

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

要求4:删除完毕之后,遍历所有学生信息。

要求5:查询数组id为  "heima002" 的学生,如果存在,则将他的年龄+1岁。

public class Student {
    private String name;
    private int id;
    private int age;

    public Student() {
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}


import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        Student[] arr = new Student[3];
        //创建学生对象
        Student s1 = new Student("张三", 001, 18);
        Student s2 = new Student("李四", 002, 21);
        Student s3 = new Student("王五", 003, 22);
        //把学生对象添加到数组中
        arr[0] = s1;
        arr[1] = s2;
        arr[2] = s3;
        Student s4 = new Student();
        do {
            //输入要添加的内容
            add(s4);
            boolean flag = contains(arr, s4.getId());
            if (flag) {
                System.out.println("id已存在!");
                //再次输入
                continue;
            } else {
                int count = getCount(arr);
                if (count == arr.length) {
                    //已经存满
                    //创建一个新数组,复制原数组中的值
                    Student[] newArr = creatNewArr(arr);
                    newArr[count] = s4;
                    printarr(newArr);
                    //删除数据
                    System.out.print("请输入要删除的id:");
                    int deleteid= scan.nextInt();
                    int index = getIndex(newArr, deleteid);
                    if (index >= 0) {
                        //如果存在
                        newArr[index] = null;
                        printarr(newArr);
                    } else {
                        //不存在
                        System.out.println("当前id不存在,删除失败");
                    }
                    //修改数据
                    System.out.print("请输入要修改的id:");
                    int changeid= scan.nextInt();
                    int index2 = getIndex(newArr, changeid);
                    if (index2 >= 0) {
                        //如果存在
                        Student st = newArr[index2];
                        int newage = st.getAge() + 1;
                        st.setAge(newage);
                        printarr(newArr);
                        //退出循环
                        break;
                    } else {
                        //不存在
                        System.out.println("当前id不存在!");
                        break;
                    }
                } else {
                    //没有存满
                    //[s1,s2,null]
                    //getCount获取到的值为2,表示数组当前已经有两个元素
                    //还有一层意思:如果下一次要添加数据,就是添加到2索引的位置
                    arr[count] = s4;
                    printarr(arr);
                    System.out.print("请输入要删除的id:");
                    int deleteid= scan.nextInt();
                    int index = getIndex(arr, deleteid);
                    if (index >= 0) {
                        //如果存在
                        arr[index] = null;
                        printarr(arr);
                    } else {
                        //不存在
                        System.out.println("当前id不存在,删除失败");
                    }
                    System.out.print("请输入要修改的id:");
                    int changeid= scan.nextInt();
                    int index2 = getIndex(arr, changeid);
                    if (index2 >= 0) {
                        //如果存在
                        Student st = arr[index2];
                        int newage = st.getAge() + 1;
                        st.setAge(newage);
                        printarr(arr);
                        //退出循环
                        break;
                    } else {
                        //不存在
                        System.out.println("当前id不存在!");
                        break;
                    }
                }
            }


        } while (true);
    }


    //找到id在数组中的索引
    public static int getIndex(Student[] arr,int id){
        for (int i = 0; i < arr.length; i++) {
            //依次得到每一个学生对象
            Student st=arr[i];
            if(st!=null){
                if(st.getId()==id){
                    return i;
                }
            }
        }
        return -1;
    }
    //遍历数组
    public static void printarr(Student[] arr){
        for (int i = 0; i < arr.length; i++) {
            Student stu=arr[i];
            //若数组中为null不输出
            if(stu!=null){
                System.out.println(stu.getName()+", "+stu.getId()+", "+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 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(Student[] arr,int id){
        for (int i = 0; i < arr.length; i++) {
            Student st=arr[i];
            if(st!=null) {
                int sid = st.getId();
                if (sid == id) {
                    return true;
                }
            }
        }
        return false;
    }
    //输入新的学生信息
    public static Student add(Student s4){
        Scanner scan=new Scanner(System.in);
        System.out.print("姓名:");
        s4.setName(scan.next());
        System.out.print("学号:");
        s4.setId(scan.nextInt());
        System.out.print("年龄:");
        s4.setAge(scan.nextInt());
        return s4;
    }
}
姓名:蒙古国海军司令
学号:004
年龄:24
张三, 1, 18
李四, 2, 21
王五, 3, 22
蒙古国海军司令, 4, 24
请输入要删除的id:2
张三, 1, 18
王五, 3, 22
蒙古国海军司令, 4, 24
请输入要修改的id:4
张三, 1, 18
王五, 3, 22
蒙古国海军司令, 4, 25

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值