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

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

测试类:

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.xdnf.cn/news/1540878.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

企业急于采用人工智能,忽视了安全强化

对主要云提供商基础设施上托管的资产的安全分析显示&#xff0c;许多公司为了急于构建和部署 AI 应用程序而打开安全漏洞。常见的发现包括对 AI 相关服务使用默认且可能不安全的设置、部署易受攻击的 AI 软件包以及不遵循安全强化指南。 这项分析由 Orca Security 的研究人员进…

重回极简:华为如何走向全面智能化?

“人类发现地球只是宇宙一员的时候&#xff0c;也是我们距离群星最遥远的时候。” 这个来自天文领域的喟叹&#xff0c;今天同样出现在行业与企业的智能化之路上。在这个时代坐标上&#xff0c;AI大模型技术极速成熟&#xff0c;AIGC和AI Agent等应用受到了各个行业的巨大期待。…

SpringBoot 数据库表结构文档生成

官方地址&#xff1a;https://github.com/pingfangushi/screw screw 螺丝钉&#xff0c;支持以下数据库 MySQL MariaDB TIDB Oracle SqlServer PostgreSQL Cache DB&#xff08;2016&#xff09; 生产文档支持 html word markdown 开始 添加依赖 <!-- 螺丝钉 --><…

PyCharm部分快捷键冲突问题

1.问题起因 今天在用PyCharm&#xff0c;编写python程序的时候&#xff0c;发现快捷间冲突&#xff0c;随后在CSDN上查找了一些资料&#xff0c;博主第一个说是搜狗输入法冲突&#xff0c;经过其内容尝试之后发现并不是这样啊&#xff0c;然后我有进行了一些资料案例的查询&am…

【第十三章:Sentosa_DSML社区版-机器学习聚类】

目录 【第十三章&#xff1a;Sentosa_DSML社区版-机器学习聚类】 13.1 KMeans聚类 13.2 二分KMeans聚类 13.3 高斯混合聚类 13.4 模糊C均值聚类 13.5 Canopy聚类 13.6 Canopy-KMeans聚类 13.7 文档主题生成模型聚类 13.8 谱聚类 【第十三章&#xff1a;Sentosa_DSML社…

VUE3配置路由(超级详细)

第一步创建vue3的项目

低代码可视化工具--vue条件判断v-if可视化设置-代码生成器

在Vue UniApp中&#xff0c;条件判断通常是通过指令v-if、v-else-if、v-else来实现的。这些机制允许你根据表达式的真假值来决定是否渲染某个元素或元素组&#xff0c;或者执行特定的逻辑。 条件判断说明 v-if 是惰性的&#xff1a;如果在初始渲染时条件为假&#xff0c;则什么…

Obsidian 全部笔记共享配置文件,obsidian仓库-文件夹配置统一化

obsidian仓库-文件夹配置统一化 在每次新建obsidian仓库(vaults)时&#xff0c;仓库的主题和快捷键等都需要重新设置&#xff0c;这是因为每次创建新的仓库时 新仓库的配置文件都是默认配置但是如果通过复制粘贴旧配置文件来达到新仓库的配置和旧仓库一致的话&#xff0c;无法…

Shiro-721—漏洞分析(CVE-2019-12422)

文章目录 Padding Oracle Attack 原理PKCS5填充怎么爆破攻击 漏洞原理源码分析漏洞复现 本文基于shiro550漏洞基础上分析&#xff0c;建议先看上期内容&#xff1a; https://blog.csdn.net/weixin_60521036/article/details/142373353 Padding Oracle Attack 原理 网上看了很多…

cmake--get_filename_component

作用 按照指定的方式获取文件或者目录的信息。 使用 get_filename_component(<variable> <filename> <component>) variable: 用于保存提取的信息。 filename: 指定路径的文件或者目录。 component: 链接1 component DIRECTORY: 提取文件或者目录的父…

Qwen 个人笔记

Qwen 个人笔记 Qwen的整体架构与Llama2类似&#xff0c;如下图所示: 1 Qwen2Config 1.1 Model 1.1.1 初始化 设置了模型的两个属性:padding_idx&#xff08;用于指定填充标记的索引&#xff09;&#xff0c;vocab_size&#xff08;词汇表的大小&#xff09;初始化了模型的…

关于“华为杯”第二十一届中国研究生数学建模竞赛赛题下载及提交作品的重要提醒

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 各参赛队伍&#xff1a; “华为杯”第二十一届中国研究生数学建模竞赛即将于2024年…

java重点学习-设计模式

十三 设计模式 工厂模式&#xff1a;spring中使用&#xff08;目的是&#xff1a;解耦&#xff09; 1.简单工厂 所有的产品都共有一个工厂&#xff0c;如果新增产品&#xff0c;则需要修改代码&#xff0c;违反开闭原则是一种编程习惯&#xff0c;可以借鉴这种编程思路 2.工厂方…

Transformer模型-5-Multi-Head Attention

上图红色圈中的部分为 Multi-Head Attention&#xff0c;是由多个Self-Attention组成的&#xff0c;虽然Encoder与Decoder中都有Multi-Head Attention&#xff0c;但他们略有区别。Encoder block包含一个 Multi-Head Attention&#xff0c; 而Decoder block包含两个 Multi-Head…

jenkins声明式流水线语法详解

最基本的语法包含 pipeline&#xff1a;所有有效的声明式流水线必须包含在一个 pipeline 块中stages&#xff1a;包含一系列一个或多个stage指令stage&#xff1a;stage包含在stages中进行&#xff0c;比如某个阶段steps&#xff1a;在阶段中具体得执行操作&#xff0c;一个或…

gcc配合cython编译python源代码

以前我们一般用Nuitka或者Pyinstaller来将python源码编译成二进制可执行文件。今天我们学习如何直接用gcc来编译。 很简单的一个python程序&#xff0c;结构如下。包含一个model.py和main.py 步骤1&#xff1a;处理main.py 处理main.py。即主程序入口 cython -D -2 --embe…

界面控件Telerik UI for WinForms 2024 Q3概览 - 支持合并单元格等

Telerik UI for WinForms拥有适用Windows Forms的110多个令人惊叹的UI控件。所有的UI for WinForms控件都具有完整的主题支持&#xff0c;可以轻松地帮助开发人员在桌面和平板电脑应用程序提供一致美观的下一代用户体验。 本文将介绍界面组件Telerik UI for WinForms在今年第一…

Linux 系统进程理解——标识符,状态

目录 进程描述-pcb 并行与并发 概念&#xff1a; 课本概念&#xff1a;程序的一个执行实例&#xff0c;正在执行的程序等 内核观点&#xff1a;担当分配系统资源&#xff08;CPU时间&#xff0c;内存&#xff09;的实体 这短短的两行就概括了进程&#xff0c;但是进程的内在…

一个能同时to B和to C、批发零售一体化的需求分析和系统设计

一些企业纠结自己的模式是to B还是to C&#xff0c;一些企业在to B和to C中转型&#xff0c;还有一些企业在做着to B的业务&#xff0c;也在做to C的代发&#xff0c;这些企业在不停地变更着业务&#xff0c;更换着系统&#xff0c;给企业带来巨大的资金和时间成本&#xff0c;…

21、Tomato

难度 低(个人认为中) 目标 root权限 一个flag 使用VMware启动 kali 192.168.152.56 靶机 192.168.152.66 信息收集 端口信息收集 可以看到有个ftp服务&#xff0c;2211实际是ssh协议端口&#xff0c;80、8888是一个web服务 web测试 80端口显示一个tomato 查看源码给了一些…