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 }