对象数组题目:使用冒泡排序按学生成绩排序

    技术2022-07-11  82

        对象数组题目: 定义类Student,包含三个属性:学号number(int),年级state(int),成绩score(int)。 创建20个学生对象,学号为1到20,年级和成绩都由随机数确定。 问题一:打印出3年级(state值为3)的学生信息。 问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息 提示: 1) 生成随机数:Math.random(),返回值类型double;   2) 四舍五入取整:Math.round(double d),返回值类型long。

    package Test; /** * @author 宇文智 * @create 2020-07-01 10:33 */ public class Expr4 { public static void main(String[] args) { Student[] students = inputStudentInfo(20); //遍历所有学生信息 System.out.println("#########原始的学生信息#########"); printStudentInfo(students); //使用冒泡排序按学生成绩排序 System.out.println("#########按照成绩排序好的学生信息#########"); sortStudentInfoByScore(students); printStudentInfo(students); //打印出3年级(state值为3)的学生信息 System.out.println("##########3年级(state值为3)的学生信息########"); findStudentInfoByState(students, 3); } private static void printStudentInfo(Student[] students) { for (Student stu : students) { System.out.println(stu.toString()); } } private static void findStudentInfoByState(Student[] students, int state) { //二分查找,state是有序的。 // int head = 0; // int end = students.length; // while (head < end) { // int middle = (head + end) / 2; // if (students[middle].state == state) { // System.out.println(state + "年级" + students[middle].toString()); // // } else if (students[middle].state > state) { // end = middle - 1; // } else { // head = middle + 1; // } // } for (int i = 0; i < students.length; i++) { if (students[i].state == state) { System.out.println(state + "年级" + students[i].toString()); } } } private static void sortStudentInfoByScore(Student[] students) { for (int i = 0; i < students.length - 1; i++) { for (int j = 0; j < students.length - i - 1; j++) { if (students[j].score > students[j + 1].score) { Student student = students[j]; students[j] = students[j + 1]; students[j + 1] = student; } } } } private static long getRandomNumber(int round, int start) { return (long) (Math.random() * round + start); } private static Student[] inputStudentInfo(int len) { Student[] students = new Student[len]; for (int i = 0; i < len; i++) { students[i] = new Student(i + 1, getRandomNumber(6, 1), getRandomNumber(101, 0)); } return students; } } class Student { int number; long state; long score; public Student(int number, long state, long score) { this.number = number; this.state = state; this.score = score; } public String toString() { return "学生信息:学号 " + number + " 年级 " + state + " 成绩 " + score; } }

     

    Processed: 0.017, SQL: 9