1 package day1_2;
2
3 /**
4 * 定义类Student,包含三个属性,学号number(int),年级state(int),分数score(int)
5 * 创建20个学生对象,学号为1-20号,年级[1,6]和分数[0,100]随机数确定
6 * 问题一:打印出3年级学生的信息
7 * 问题二:将学生的成绩按照冒泡排序,并打印学生信息
8 */
9
10 public class ObjectExer {
11 public static void main(String[] args) {
12 //声明一个Student类型数组
13 Student[] students = new Student[20];
14 for (int i = 0; i < students.length; i++) {
15 //每个数组元素引用一个学生对象
16 students[i] = new Student();
17 //给每个学生对象属性赋值
18 //学号[1,20]
19 students[i].number = i+1;
20 //年级[1,6]
21 //Math.random() 返回值double类型 [0,1)
22 //使用公式 (int)(Math.random()*(max-min+1)+min)
23 students[i].state = (int)(Math.random()*(6-1+1)+1);
24 //成绩[0,100]
25 //Math.random() 返回值double类型 [0,1)
26 //方式一
27 students[i].score = (int)(Math.random()*(100-0+1));
28 //方式二
29 //Math.round(double n) 返回值long类型 对n进行四舍五入
30 //students[i].score = (int)Math.round(Math.random()*100);
31 }
32 //遍历学生信息
33 for (int i = 0; i < students.length; i++) {
34 System.out.println(students[i].info());
35 }
36
37 System.out.println("***************");
38 //打印出3年级学生的信息
39 for (int i = 0; i < students.length; i++) {
40 if(students[i].state == 3){
41 System.out.println(students[i].info());
42 }
43 }
44
45 System.out.println("**********************");
46 //将学生的成绩按照冒泡排序,并打印学生信息
47 for (int i = 0; i < students.length - 1; i++) {
48 for (int j = 0; j < students.length-i-1; j++) {
49 if (students[j].score > students[j+1].score) {
50 //注意:是交换学生的位置,而不是交换学生的成绩
51 Student tmp = students[j];
52 students[j] = students[j + 1];
53 students[j+1] = tmp;
54 }
55 }
56 }
57
58 //遍历排序后的学生数组
59 for (int i = 0; i < students.length; i++) {
60 System.out.println(students[i].info());
61 }
62
63
64 }
65 }
66
67 class Student{
68 int number;//学号
69 int state;//年级
70 int score;//成绩
71
72 //显示学生信息
73 public String info() {
74 return "学号:" + number + ",班级:"+ state + ",分数:" + score;
75 }
76 }