栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java面向对象小测试

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java面向对象小测试

Java面向对象小测试 要求

定义一个长度为3的数组,并初始化3名学生对象,学号,姓名各不相同 学生属性:姓名,学号,年龄
要求: 1、添加一个学生对象,并进行学号唯一性判断
2、添加完成后遍历所有学生信息
3、通过id删除学生信息,如果不存在,则提示删除失败
4、删除完毕后,遍历所有学生信息
5、输入一个学生id,并查询是否存在该学生,如果存在则年龄+1

*****代码实现*****

public class StudentDemo {
    public static void main(String[] args) {
        //定义一个长度为3的数组,并初始化3名学生对象
        Student[] arr = new Student[3];
        Student s1 = new Student("01", "小红", 22);
        Student s2 = new Student("02", "小白", 12);
        Student s3 = new Student("03", "小蓝", 21);
        arr[0] = s1;
        arr[1] = s2;
        arr[2] = s3;
        //1、添加一个学生对象,并进行学号唯一性判断
        //新建一个要添加的学生对象
        Student s4 = new Student("04", "小绿", 11);
        //判断id是否重复,重复无需添加
        //不重复就添加
        boolean flag = contains(arr, s4.getId());
        if (flag) {
            //id存在,无需添加
            System.out.println("当前id已存在,请修改后,再进行添加");
        } else {
            //不存在,需要添加
            //若数组已经存满---扩容
            //若没有存满---直接添加
            int count = getCount(arr);
            if (count == arr.length) {
                //已经存满
                //创建大一点的新数组
                Student[] newArr = creatNewArr(arr);
                arr = newArr;
                //2、添加并遍历所有学生信息
                arr[count] = s4;
                printArr(arr);
            } else {
                //没有存满
                //假设数组为[s1,s2,null]
                //2、添加并遍历所有学生信息
                //那么getCount得到的是2,表示数组中存了2个元素,也表示下标为2的位置是null,那么下次赋值可以直接赋值到此位置
                arr[count] = s4;
                printArr(arr);
            }
        }
        //3、通过id删除学生信息,如果不存在,则提示删除失败
        //通过id查询索引
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要删除的id");
        int index = getIndex(arr, sc.next());
        if (index >= 0) {
            //存在就删除---即赋予空值null
            arr[index] = null;
            if (getCount(arr) >= 3) {
                for (int i = index; i < getCount(arr) + 1; i++) {
                    arr[i] = arr[i + 1];
                }
                arr[arr.length - 1] = null;
            } else {
                for (int i = index; i < args.length; i++) {
                    arr[index] = arr[index + 1];

                }
            }
            System.out.println("删除后数组为:");
            printArr(arr);
        } else {
            //如果不存在,则提示删除失败
            System.out.println("id不存在,删除失败");
        }

        //5、查询id为输入值的学生,如果存在则年龄+1
        System.out.println("请输入要修改的学生id:");
        int indexDel = getIndex(arr, sc.next());
        if(indexDel>0){
            //存在,年龄+1
            arr[indexDel].setAge(arr[indexDel].getAge()+1);
            System.out.println("修改后的数组为:");
            printArr(arr);
        }else {
            //不存在,返回修改失败
            System.out.println("id不存在,修改失败");
        }
    }


    //我要干嘛?---找到id对应的索引
    //我需要什么?---数组,id
    //调用出需要返回值吗?---需要,因为之后要根据索引删除信息
    public static int getIndex(Student[] arr, String id) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] != null) {
                if (id.equals(arr[i].getId())) {
                    return i;
                }
            }
        }
        //如果遍历完之后,没有找到,则返回-1,因为没有索引是负值
        return -1;
    }

    //定义一个遍历方法
    private static void printArr(Student[] arr) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] != null) {
                System.out.println(arr[i].getId() + "," + arr[i].getName() + "," + arr[i].getAge());
            }
        }
    }

    //扩容
    private static Student[] creatNewArr(Student[] arr) {
        //创建一个新数组,长度为老数组的1.5倍,并向上取整后,强制转换为int
        Student[] newArr = new Student[(int) Math.ceil(arr.length * 1.5)];
        //将arr数组从0号位开始,复制给newArr,newArr从0号位开始接收,复制元素的个数为arr.length
        System.arraycopy(arr, 0, newArr, 0, arr.length);
        return newArr;
    }

    //定义一个方法判断数组中已经存了几个元素
    public static int getCount(Student[] arr) {
        int iCount = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] != null) {
                iCount++;
            }
        }
        return iCount;
    }

    //我要干嘛?---唯一性判断
    //做这件事需要什么?---数组,id
    //调用处是否需要继续使用方法的返回结果?---必须返回
    public static boolean contains(Student[] arr, String id) {
        //依次获取数组里的学生对象,
        for (int i = 0; i < arr.length; i++) {
            Student stu = arr[i];
            //如果stu为null,则stu.getId会报错
            if (stu != null) {
                if (id.equals(stu.getId())) {
                    return true;
                }
            }
        }
        //循环结束后,还没找到,才return false
        return false;
    }
}
运行结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/959248.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号