对象数组练习案例

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

 Student.java

/** Copyright (c) 2017, 2023, zxy.cn All rights reserved.**/
package cn.black;/*** <p>Description:定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。</p>* 学生的属性:学号、姓名、年龄* 要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断* 要求2:添加完毕之后,遍历所有学生信息* 要求3:通过id删除学生信息* 如果存在,则删除,如果不存在,则提示删除失败* 要求4:删除完毕之后,遍历所有学生信息* 要求5:查询数组id为“2”的学生,如果存在,则将他的年龄+1岁* <p>Class:Student</p>* <p>Powered by zxy On 2023/5/25 21:40 </p>** @author zxy [zxy06291@163.com]* @version 1.0* @since 17*/
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;}
}
StudentTest.java
/** Copyright (c) 2017, 2023, zxy.cn All rights reserved.**/
package cn.black;/*** <p>Description:</p>* <p>Class:StudentTest</p>* <p>Powered by zxy On 2023/5/25 21:45 </p>** @author zxy [zxy06291@163.com]* @version 1.0* @since 17*/
public class StudentTest {public static void main(String[] args) {//1.创建一个数组用来存储学生对象Student[] arr = new Student[3];//2.创建学生对象并添加到数组当中Student stu1 = new Student(1, "zhangsan", 23);Student stu2 = new Student(2, "lisi", 24);Student stu3 = new Student(3, "wangwu", 25);//3.把学生对象添加到数组当中arr[0] = stu1;arr[1] = stu2;arr[2] = stu3;//要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断Student stu4 = new Student(4, "zhaoliu", 26);//唯一性判断//已存在---不用添加//不存在---就可以把学生对象添加进数组boolean flag = contains(arr, stu4.getId());if (flag) {//已存在---不用添加System.out.println("当前id重复,请修改id后再进行添加");} else {//不存在---就可以把学生对象添加进数组//把stu4添加到数组当中//1.数组已经存满---只能创建一个新的数组,新数组的长度 = 老数组 + 1//2.数组没有存满---直接添加int count = getCount(arr);if (count == arr.length) {//已经存满//创建一个新的数组,新数组的长度 = 老数组 + 1//然后把老数组的元素,拷贝到新数组当中Student[] newArr = creatNewArr(arr);//把stu4添加进去newArr[count] = stu4;//要求2:添加完毕之后,遍历所有学生信息printArr(newArr);} else {//没有存满//[stu1,stu2,null]//getCount 获取到的是2,表示数组当中已经有了2个元素//还有一层意思:如果下一次要添加数据,就是添加到2索引的位置arr[count] = stu4;//要求2:添加完毕之后,遍历所有学生信息printArr(arr);}}//要求3:通过id删除学生信息-如果存在,则删除,如果不存在,则提示删除失败//要找到id 在数组中对应的索引int index = getIndex(arr,4);if (index >= 0){//如果存在,则删除arr[index]  = null;//要求4:删除完毕之后,遍历所有学生信息printArr(arr);}else {//如果不存在,则提示删除失败System.out.println("当前id不存在,删除失败");}//要求5:查询数组id为“2”的学生,如果存在,则将他的年龄+1岁//先要找到id 为2 的学生对应的索引int index1 = getIndex(arr,2);if (index1 >= 0){//存在,则将他的年龄+1岁Student stu = arr[index1];//把原来的年龄拿出来int newAge = stu.getAge() + 1;//把+1之后的年龄塞回去stu.setAge(newAge);//遍历数组printArr(arr);}else {//不存在,则直接提示System.out.println("当前id不存在,修改失败");}}//创建方法-要求3:通过id删除学生信息-如果存在,则删除,如果不存在,则提示删除失败//1.我要干嘛? 找到id在数组中的索引//2.我需要什么? 数组 id//3.调用处是否需要继续使用方法的结果?要public static int getIndex(Student[] arr,int id){for (int i = 0; i < arr.length; i++) {//依次得到每一个学生对象Student stu = arr[i];//对stu 进行一个非空判断if (stu != null){int sid = stu.getId();if (sid == id) {return i;}}}//循环结束之后,还没有找到就表示不存在return -1;}//创建方法-要求2:添加完毕之后,遍历所有学生信息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//然后把老数组的元素,拷贝到新数组当中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;}//1.我要干嘛? 唯一性判断//2.我干这件事情,需要什么才能完成?  数组 id//3.调用处是否需要继续使用方法的结果? 必须返回public static boolean contains(Student[] arr, int id) {for (int i = 0; i < arr.length; i++) {//依次获取到数组里面的每一个学生对象Student stu = arr[i];//获取数组中学生对象的idint sid = stu.getId();//比较if (sid == id) {return true;}}//当循环结束之后,还没有找到一样的,那么就表示数组中要查找的id 是不存在的return false;}
}

 


http://www.ppmy.cn/news/173791.html

相关文章

计算机简史

1、计算机始祖 从1980年8月到1981年8月&#xff0c;在整整一年的时间里&#xff0c;埃斯特奇领导着“国际象棋”工程计划13人小组奋力攻关。“当时很少有人体会到&#xff0c;这一小组人即将改写全世界的历史。”&#xff08;英特尔华裔副总裁虞有澄语&#xff09;据说&#xf…

代码是如何控制硬件的?

简单来说&#xff0c;就是软件指令通过操作寄存器&#xff0c;控制与、或、非门搭建的芯片电路&#xff0c;产生、保存高低电平信号&#xff0c;实现相应的逻辑&#xff0c;最终通过IO、串口等输出。 要想更清楚的了解软件控制硬件的原理&#xff0c;就要明白cpu的框架及工作原…

【VictoriaMetrics】VictoriaMetrics单机版数据删除

在使用vm的过程中,我们会遇到需要删除不必要的数据,那vm是如何操作数据删除的呢? VictoriaMetrics通过发送HTTP请求到http://<victoriametrics-addr>:8428/api/v1/admin/tsdb/delete_series?match=<timeseries_selector_for_delete> 其中<timeseries_sele…

2023年上半年系统分析师上午真题及答案解析

1.信息系统的构成包括( )。 A.计算机硬件、计算机软件、网络和通信设备、系统分析人员、系统设计人员、系统开发人员 B.计算机硬件、计算机软件、系统分析人员、系统设计人员、系统开发人员 C.计算机硬件、计算机软件、系统设计人员、系统开发人员、信息用户 D.计算机硬件…

EBU6304 Software Engineering 知识点总结_4 analysis, design, implementation, testing

analysis 仅仅从用户的需求来看得到的消息不全面&#xff0c;还需要分析。用户可能认为你明白了&#xff0c;或者他考虑不全面&#xff0c;觉得一些地方是不需要的。 因此我们需要分析来 Refining requirements。 gather requirements-analyse in real world context-develo…

微单相机是什么

微单意思为微型单镜无反电子取景相机&#xff0c;可以涵盖微型和单反两层含义&#xff1a;相机微型、小巧、便携&#xff0c;还可以像单反相机一样更换镜头&#xff0c;并提供和单反相机同样的画质。 松下和奥林巴斯是第一个意识到&#xff0c;如果你取消了数码单反相机的光学观…

Caleb Pike索尼A7 III视频指南DSLR视频拍摄教程 中文字幕 Sony A7 III Video Guide

Caleb Pike索尼A7 III视频指南DSLR视频拍摄教程 中文字幕 Sony A7 III Video Guide 原文地址&#xff1a;https://www.aeziyuan.com/t-20771.html 本视频教程是关于Caleb Pike索尼A7 III视频指南DSLR视频拍摄教程 中文字幕 Sony A7 III Video Guide&#xff0c;时长&#xff1a…

中国微单相机市场深度研究分析报告

【报告篇幅】&#xff1a;90 【报告图表数】&#xff1a;142 【报告出版时间】&#xff1a;2021年1月 报告摘要 2019年中国微单相机市场规模达到了XX亿元&#xff0c;预计2026年可以达到XX亿元&#xff0c;未来几年年复合增长率(CAGR)为XX%。 本报告研究中国市场微单相机的…