按照总分,学号,姓名的代码未进行排序,怎么改,用冒泡排序。能在代码上改一下吗。
3条回答 默认 最新
- CSDN专家-sinJack 2023-03-31 17:45关注
j和j+1交换不是和i交换
import java.util.Scanner; public class Student { private String name; private String stuId; private int[] scores; private double avgScore; public Student(String name, String stuId, int[] scores) { this.name = name; this.stuId = stuId; this.scores = scores; double totalScore = 0; for (int score : scores) { totalScore += score; } this.avgScore = totalScore / scores.length; } public String getName() { return name; } public String getStuId() { return stuId; } public int[] getScores() { return scores; } public double getAvgScore() { return avgScore; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入学生的个数:"); int n = scanner.nextInt(); scanner.nextLine(); Student[] students = new Student[n]; for (int i = 0; i < n; i++) { System.out.print("请输入第" + (i+1) + "个学生的名字:"); String name = scanner.nextLine(); System.out.print("请输入第" + (i+1) + "个学生的学号:"); String stuId = scanner.nextLine(); System.out.print("请输入第" + (i+1) + "个学生的成绩(以空格分隔):"); String[] scoreStrArr = scanner.nextLine().split(" "); int[] scores = new int[scoreStrArr.length]; for (int j = 0; j < scores.length; j++) { scores[j] = Integer.parseInt(scoreStrArr[j]); } students[i] = new Student(name, stuId, scores); } // 计算每门学科的平均成绩 double[] subjectAvgScores = new double[students[0].getScores().length]; for (int i = 0; i < subjectAvgScores.length; i++) { double totalScore = 0; for (Student student : students) { totalScore += student.getScores()[i]; } subjectAvgScores[i] = totalScore / n; } System.out.println("每门学科的平均成绩为:"); for (int i = 0; i < subjectAvgScores.length; i++) { System.out.print(subjectAvgScores[i] + " "); } System.out.println(); // 计算每位同学的平均成绩,并按学号由大到小排序 System.out.println("按学号由大到小排序的每位同学的平均成绩为:"); for (int i = 0; i < students.length; i++) { for (int j = 0; j < students.length-i-1; j++) { if (students[j].getStuId().compareTo(students[j+1].getStuId()) < 0) { Student temp = students[j]; students[j] = students[j+1]; students[j+1] = temp; } } } for (Student student : students) { System.out.println(student.getName() + " " + student.getStuId() + " " + student.getAvgScore()); } // 按总成绩由大到小排序 System.out.println("按总成绩由大到小排序的所有学生信息为:"); for (int i = 0; i < students.length; i++) { for (int j = 0; j < students.length-i-1; j++) { double score1 = 0; for (int k = 0; k < students[j].getScores().length; k++) { score1 += students[j].getScores()[k]; } double score2 = 0; for (int k = 0; k < students[j+1].getScores().length; k++) { score2 += students[j+1].getScores()[k]; } if (score1 < score2) { Student temp = students[j]; students[j] = students[j+1]; students[j+1] = temp; } } } for (Student student : students) { System.out.println(student.getName() + " " + student.getStuId() + " " + student.getAvgScore()); } } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥20 RL+GNN解决人员排班问题时梯度消失
- ¥15 统计大规模图中的完全子图问题
- ¥15 使用LM2596制作降压电路,一个能运行,一个不能
- ¥60 要数控稳压电源测试数据
- ¥15 能帮我写下这个编程吗
- ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路
- ¥15 phython读取excel表格报错 ^7个 SyntaxError: invalid syntax 语句报错
- ¥20 @microsoft/fetch-event-source 流式响应问题
- ¥15 ogg dd trandata 报错
- ¥15 高缺失率数据如何选择填充方式