50.面向对象进阶训练-学生类

news/2024/11/15 1:58:37/
//定义一个长度为3的数组,存储1-3名学生对象作为初始数据
//学生属性:学号 姓名 年龄,其中学号姓名各不相同
//要求:1.再次添加一个学生对象,并在添加的时候进行学号的唯一性判断//2.添加完毕之后,遍历所有学生信息//3.通过id删除学生信息(若存在就删除,若不存在则提示删除失败)//4.删除完毕之后,遍历所有学生信息//5.查询数组id为“2”的学生,如果存在则将他的年龄增加一岁
java">public class Student {//定义一个长度为3的数组,存储1-3名学生对象作为初始数据//学生属性:学号 姓名 年龄,其中学号姓名各不相同//要求:1.再次添加一个学生对象,并在添加的时候进行学号的唯一性判断//2.添加完毕之后,遍历所有学生信息//3.通过id删除学生信息(若存在就删除,若不存在则提示删除失败)//4.删除完毕之后,遍历所有学生信息//5.查询数组id为“2”的学生,如果存在则将他的年龄增加一岁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(char 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;}
}

测试类:

java">public class StudentTest {public static void main(String[] args) {//1.创建数组Student[] arr = new Student[3];//2.创建学生对象Student s1 = new Student(001, "张三", 20);Student s2 = new Student(002, "李四", 21);Student s3 = new Student(003, "王五", 22);//3.把学生对象添加到数组中arr[0] = s1;arr[1] = s2;arr[2] = s3;//要求 1.再次添加一个学生对象,并在添加的时候进行学号的唯一性判断Student s4 = new Student(004, "赵六", 25);boolean flag = contains(arr, s4.getId());if (flag) {//已存在--不用添加System.out.println("当前id重复,请修改后添加");} else {//不存在--把新学生添加进数组中int count = getCount(arr);if (count == arr.length) {//已经存满,需创建一个新的数组,长度为老数组+1Student[] newArr = createNewArr(arr);newArr[count] = s4;//要求 2:遍历所有学生信息printArr(newArr);} else {//当前没有存满//getCount获取到的值就是需要添加的新元素的索引arr[count] = s4;//要求 2:遍历所有学生信息printArr(arr);}}System.out.println("-------------");//分割线//要求 3:通过id删除学生信息(若存在就删除,若不存在则提示删除失败)int index = getIndex(arr, 1);if(index>=0){//如果存在,则删除,直接变为nullarr[index]=null;//要求 4:遍历所有学生信息printArr(arr);}else{//不存在,提示删除失败System.out.println("当前id不存在,删除失败");}System.out.println("--------------");//分割线//要求 5:查询数组id为“2”的学生,如果存在则将他的年龄增加一岁//首先找到id为002的学生索引int index2=getIndex(arr,2);//判断索引if(index>=0){//存在,将年龄+1Student student = arr[index2];//把原来的年龄拿出来+1int newAge = student.getAge()+1;//再用set方法把年龄放回去student.setAge(newAge);//遍历数组,查看是否修改成功printArr(arr);}else{//不存在System.out.println("当前id不存在");}}public static boolean contains(Student[] arr, int id) {for (int i = 0; i < arr.length; i++) {//依次获取到数组中的每一个学生对象Student s = arr[i];if (s != null) {//再依次获取每位学生的idint sid = s.getId();//比较if (sid == id) {return true;}}}//当循环结束之后,还没有找到一样的,那么就表示要找的id是不存在的return false;}//定义一个方法,判断数组中存了几个元素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,然后把老数组元素放到新数组当中public static Student[] createNewArr(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 void printArr(Student[] arr) {for (int i = 0; i < arr.length; i++) {Student s = arr[i];if (s != null)System.out.println(s.getId() + ", " + s.getName() + ", " + s.getAge());}}//找到id在数组中的索引public static int getIndex(Student[] arr,int id){for (int i = 0; i < arr.length; i++) {//依次得到每一个学生对象Student s=arr[i];//对s进行非空判断if (s!=null){int sid=s.getId();if(sid==id){return i;}}}//当循环结束之后,还没找到对应的索引就表示不存在return -1;//-1表示不存在}
}

运行结果:


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

相关文章

第4步CentOS配置SSH服务用SSH终端XShell等连接方便文件上传或其它操作

宿主机的VM安装CENTOS文件无法快速上传&#xff0c;也不方便输入命令行&#xff0c;用SSH终端xshell连接虚拟机的SSH工具就方便多了&#xff0c;实现VM所在宿主机Win10上的xshell能连接vm的centos要实现以下几个环节 1、确保宿主机与虚拟机的连通性。 2、虚拟机安装SSH服务&…

金属材质检测系统源码分享

金属材质检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

从 “Hello, World!“ 到深入理解 print 函数与异常类型

一、Hello, World!&#xff1a;Python 编程的入门仪式 当我们开始学习任何一门编程语言时&#xff0c;几乎都会先接触到 "Hello, World!" 程序。它就像是一扇通往编程世界的大门&#xff0c;简单却意义非凡。在 Python 中&#xff0c;实现这个程序只需要一行代码&…

个人小结(2.0)

离谱&#xff0c;困扰着几周的问题今天偶然发现了解决方法。 问题如下&#xff1a;就是对应的模块引入爆红&#xff0c;但是单击进入引入的文件没有问题 然后它的提示是&#xff1a; 无法找到模块“../views/screen/index.vue”的声明文件。“c:/Users/10834/Desktop/0716_pro…

uniapp微信小程序用户授权方法

效果 步骤 1&#xff09;div标签 <button type"primary" class"btn-login" click"getUserInfo">一键登录</button>2&#xff09;js方法 methods: {getUserInfo() {console.log("aaaa")uni.getUserProfile({desc: Wexin, …

MATLAB基础:7.计算与编程策略

计算与编程策略 一、矢量化编程 MATLAB以矩阵为基本元素 什么是矢量化编程 将矩阵视为一个整体&#xff0c;对矩阵中的元素同时进行某种操作或运算&#xff0c;即整块的操作大量数据 矢量化编程的优点 代码大大简化&#xff0c;编程效率高&#xff0c;代码可读性高程序执行…

npm的作用域介绍

npm 的作用域 在 node_modules 目录中&#xff0c;带有 符号的目录和不带 符号的目录有以下区别&#xff1a; 带 的目录&#xff1a; 表示这是一个 作用域&#xff08;Scoped Package&#xff09;。作用域可以帮助组织和管理相关的包&#xff0c;通常以 scope/package-na…

Python中的策略模式:解锁编程的灵活之钥

引言 在软件开发过程中&#xff0c;我们经常需要根据不同的条件或上下文来改变算法的行为。例如&#xff0c;在电子商务网站中&#xff0c;根据用户所在地区选择合适的支付方式&#xff1b;或者在游戏中&#xff0c;根据玩家等级调整敌人AI的行为。这些场景都需要我们的程序能…