1 /**
2 *
3 * @Description
4 * @author Bytezero·zhenglei! Email:420498246@qq.com
5 * @version
6 * @date 2021年9月12日上午9:06:47
7 * @
8 * 对象数组题目
9 * 定义类:Student,包含三个属性:学号number(int),年级state(int),
10 * 成绩score(int)
11 * 创建20个学生对象,学号为1-20,年级和成绩都有随机数确定
12 * 问题一:打印出3年级(state值为3)的学生信息
13 * 问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息
14 *
15 * 提示:生成随机数 Math.random(),返回值double
16 * 四舍五入取整数:Math.round(double d),返回值类型long
17 */
18 public class StudentTest
19 {
20 public static void main(String[] args)
21 {
22 //声明Student类型的数组
23 Student[] stus = new Student[20];
24 for(int i =0; i <stus.length;i++)
25 {
26 //给数组元素赋值
27 stus[i] = new Student();
28 //给student对象的属性赋值
29 stus[i].number= (i+1);
30 //要求年级[1-6]
31 stus[i].state =(int)(Math.random()*(6-1+1)+1);
32 //成绩 [0-100]
33 stus[i].score = (int)(Math.random()*(100-0+1)+0);
34 }
35
36 //遍历学生数组
37 for(int i =0; i <stus.length; i++)
38 {
39 //System.out.println(stus[i].number+"\t"+stus[i].score+"\t"+stus[i].state);
40
41 System.out.println(stus[i].info());
42 }
43
44 System.out.println("******************************************");
45 //问题一:打印出3年级(state值为3)的学生信息
46 for(int i = 0; i <stus.length;i++)
47 {
48 if(stus[i].state==3)
49 {
50 System.out.println(stus[i].info());
51 }
52
53 }
54
55 //问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息
56 System.out.println("******************************************");
57 System.out.println( "问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息");
58
59 for(int i =0;i <stus.length-1;i++)
60 {
61 for(int j =0;j<stus.length-1-i;j++)
62 {
63 if(stus[j].score>stus[j+1].score)
64 {
65 //交换的是数组的元素:Student对象!!!
66 Student temp = stus[j];
67 stus[j] = stus[j+1];
68 stus[j+1] = temp;
69 }
70 }
71 }
72
73 //遍历学生数组
74 for(int i =0; i <stus.length; i++)
75 {
76 //System.out.println(stus[i].number+"\t"+stus[i].score+"\t"+stus[i].state);
77
78 System.out.println(stus[i].info());
79 }
80
81
82 }
83 }
84
85 class Student
86 {
87 int number; //学号
88 int state; //年级
89 int score; //成绩
90
91
92 //显示学生信息的方法
93 public String info()
94 {
95 return"学号:"+number+"\t年级:"+state+"\t成绩:"+score;
96 }
97
98 }
99
100
101
102 /****************************改进**************************/
103
104 /**
105 *
106 * @Description
107 * @author Bytezero·zhenglei! Email:420498246@qq.com
108 * @version
109 * @date 2021年9月12日上午9:06:47
110 * @
111 * 对象数组题目
112 * 定义类:Student,包含三个属性:学号number(int),年级state(int),
113 * 成绩score(int)
114 * 创建20个学生对象,学号为1-20,年级和成绩都有随机数确定
115 * 问题一:打印出3年级(state值为3)的学生信息
116 * 问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息
117 *
118 * 提示:生成随机数 Math.random(),返回值double
119 * 四舍五入取整数:Math.round(double d),返回值类型long
120 */
121
122 /*********** 改进 **********/
123 /*将操作数组的功能封装到方法中*/
124
125
126
127 public class StudentTest2
128 {
129 public static void main(String[] args)
130 {
131 //声明Student类型的数组
132 Student2[] stus = new Student2[20];
133 for(int i =0; i <stus.length;i++)
134 {
135 //给数组元素赋值
136 stus[i] = new Student2();
137 //给student对象的属性赋值
138 stus[i].number= (i+1);
139 //要求年级[1-6]
140 stus[i].state =(int)(Math.random()*(6-1+1)+1);
141 //成绩 [0-100]
142 stus[i].score = (int)(Math.random()*(100-0+1)+0);
143 }
144
145 StudentTest2 test = new StudentTest2();
146 //遍历学生数组
147 test.print(stus);
148
149 //问题一:打印出3年级(state值为3)的学生信息
150 System.out.println("******************************************");
151 System.out.println("问题一:打印出3年级(state值为3)的学生信息");
152 test.serchState(stus, 3);
153
154
155 //问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息
156 System.out.println("******************************************");
157 System.out.println( "问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息");
158 test.sort(stus);
159 //遍历学生数组
160 test.print(stus);
161
162 }
163
164 /**
165 *
166 * @Description 遍历Student2[]数组的操作
167 * @author Bytezero·zhenglei!
168 * @date 2021年9月12日上午9:56:45
169 * @param stus
170 *
171 */
172 public void print(Student2[] stus)
173 {
174 //遍历学生数组
175 for(int i =0; i <stus.length; i++)
176 {
177 //System.out.println(stus[i].number+"\t"+stus[i].score+"\t"+stus[i].state);
178
179 System.out.println(stus[i].info());
180 }
181 }
182
183 /**
184 *
185 * @Description 查找Student数组中指定的学生信息
186 * @author Bytezero·zhenglei!
187 * @date 2021年9月12日上午9:52:52
188 * @param stus 要查找的数组
189 * @param state 要找的年级
190 *
191 */
192 public void serchState(Student2[] stus,int state)
193 {
194 //问题一:打印出3年级(state值为3)的学生信息
195 for(int i = 0; i <stus.length;i++)
196 {
197 if(stus[i].state==state)
198 {
199 System.out.println(stus[i].info());
200 }
201
202 }
203 }
204
205 /**
206 *
207 * @Description 给Student2数组排序
208 * @author Bytezero·zhenglei!
209 * @date 2021年9月12日上午9:55:35
210 * @param stus
211 *
212 */
213 public void sort(Student2[] stus)
214 {
215 for(int i =0;i <stus.length-1;i++)
216 {
217 for(int j =0;j<stus.length-1-i;j++)
218 {
219 if(stus[j].score>stus[j+1].score)
220 {
221 //交换的是数组的元素:Student对象!!!
222 Student2 temp = stus[j];
223 stus[j] = stus[j+1];
224 stus[j+1] = temp;
225 }
226 }
227 }
228 }
229
230
231
232
233 }
234
235 class Student2
236 {
237 int number; //学号
238 int state; //年级
239 int score; //成绩
240
241
242 //显示学生信息的方法
243 public String info()
244 {
245 return"学号:"+number+"\t年级:"+state+"\t成绩:"+score;
246 }
247
248 }

Java 对象数组题目 + 改进(封装方法)的更多相关文章

  1. JSon_零基础_007_将JSon格式的"数组"字符串转换为Java对象"数组"

    将JSon格式的"数组"字符串转换为Java对象"数组". 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“n ...

  2. java对象数组

    问题描述:     java 对象数组的使用 问题解决: 数组元素可以是任何类型(只要所有元素具有相同的类型) 数组元素可以是基本数据类型 数组元素也可以是类对象,称这样的数组为对象数组.在这种情况下 ...

  3. 将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)

    方法一:使用Arrays.asList()方法   1 2 String[] asset = {"equity", "stocks", "gold&q ...

  4. java 对象数组

    java 对象数组 from zhaocundang@163.com 先 用类声明数组: 再把类的实例赋给数组: package works; import java.util.Scanner; pu ...

  5. java中数组有没有length()方法?string没有lenght()方法?

    java中数组有没有length()方法,求数组的长度可以使用数组的length属性. int[] arr={1,2,3,4,5}; int length=arr.length;//求数组的长度 -- ...

  6. 【Java面试题】18 java中数组有没有length()方法?string没有lenght()方法?下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";

    数组没有length()这个方法,有length的属性.String有有length()这个方法. int a[]; a.length;//返回a的长度 String s; s.length();// ...

  7. java对象数组的概述和使用

    1 public class Student 2 { 3 // 成员变量 4 private String name; 5 private int age; 6 7 // 构造方法 8 public ...

  8. 【Java】数组不能通过toString方法转为字符串

    java里,所有的类,不管是java库里面的类,或者是你自己创建的类,全部是从object这个类继承的.object里有一个方法就是toString(),那么所有的类创建的时候,都有一个toStrin ...

  9. SpringMVC接收对象数组参数进行封装

    前台代码:注意.contentType : "application/json; charset=utf-8",必须要设置,只有这样SpringMVC才认识这个json数组参数 f ...

  10. java去除数组重复元素的方法

    转载自:https://blog.csdn.net/Solar24/article/details/78672500 import java.util.ArrayList; import java.u ...

随机推荐

  1. 【解决一个小问题】proto文件中的enum,去掉长长的重复的enum名字

    在proto中定义的enum,通常类型名字都会带上enum的前缀,很丑陋,如何去掉呢? enum DataSourceType{ NotUse = 0; MySQL = 1; ElasticSearc ...

  2. [置顶] Gin--Begoo框架快速指南

    Gin篇 第一篇: Gin-官方文档 第二篇: Gin-安装,修改启动端口,get/post 请求参数,模型绑定shouldbind,自定义验证器/表单验证 第三篇: Gin-上传文件/返回前端.中间 ...

  3. 搭建mongo的replica set

    搭建mongo的replica set 前言 安装 构建副本集 加入认证 备份数据 备份数据到本地 数据恢复 搭建mongo的replica set 前言 准备三台机器,相互可以访问的.处理思路,先构 ...

  4. 9.4 Windows驱动开发:内核PE结构VA与FOA转换

    本章将继续探索内核中解析PE文件的相关内容,PE文件中FOA与VA,RVA之间的转换也是很重要的,所谓的FOA是文件中的地址,VA则是内存装入后的虚拟地址,RVA是内存基址与当前地址的相对偏移,本章还 ...

  5. 营销(marketing)、推广(Promotion)和 运营(Operation)的概念分别是什么?

    首先要明确的原则: 1.你得承认"讨论任何事情之前不弄清楚概念定义就是耍流氓" 2.你得承认"由于每个人的经验学识和理解力的不同,我们常对概念定义产生分歧" 3 ...

  6. Gitee API的使用|如何批量删除Gitee下的所有仓库

    前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总https://blog.cs ...

  7. Java21 + SpringBoot3集成七牛云对象存储OSS,实现文件上传

    目录 前言 实现步骤 引入maven依赖 修改配置文件 创建七牛云配置类 创建文件操作服务类 创建文件操作控制器 前端实现 运行效果 总结 前言 近日心血来潮想做一个开源项目,目标是做一款可以适配多端 ...

  8. 资深工程师 VSCode C/C++ 必备开发插件

    1.前言 俗话说"工欲善其事,必先利其器",下面介绍几个VSCode提高开发效率的插件,资深工程师必备. 2.基础插件 2.1.Chinese(Simplified) vscode ...

  9. 《ASP.NET Core 与 RESTful API 开发实战》-- (第7章)-- 读书笔记(中)

    第 7 章 高级主题 7.2 并发 当两个用户获取同一个资源后,再同时修改该资源,就会导致并发问题 常见实现并发的方法有以下两种: 保守式并发控制,每次修改资源,都锁定资源 开放式并发控制,每次修改资 ...

  10. Codeforces Round #884 (Div. 1 + Div. 2) A-E

    比赛链接 A 代码 #include <bits/stdc++.h> using namespace std; using ll = long long; bool solve() { i ...