import java.util.Arrays;import java.util.Comparator;class Student { String name; int id; String gender; int score1; int score2; int score3; public Student(String name, int id, String gender, int score1, int score2, int score3) { this.name = name; this.id = id; this.gender = gender; this.score1 = score1; this.score2 = score2; this.score3 = score3; } public String toString() { return name + "\t" + id + "\t" + gender + "\t" + score1 + "\t" + score2 + "\t" + score3; } }public class 理论2 { /** * @param args / public static void main(String[] args) { Student[] students = { new Student("张三", 1001, "男", 90, 80, 70), new Student("李四", 1002, "女", 80, 70, 60), new Student("王五", 1003, "男", 70, 60, 50), new Student("赵六", 1004, "女", 60, 50, 40) }; Arrays.sort(students, new Comparator<Student>() { public int compare(Student s1, Student s2) { int totalScore1 = s1.score1 + s1.score2 + s1.score3; int totalScore2 = s2.score1 + s2.score2 + s2.score3; return totalScore2 - totalScore1; } } ); System.out.println("姓名\t学号\t性别\t成绩1\t成绩2\t成绩3"); for (Student student : students) { System.out.println(student); } }import java.util.Arrays;import java.util.Comparator;class Student { String name; int id; String gender; int score1; int score2; int score3; public Student(String name, int id, String gender, int score1, int score2, int score3) { this.name = name; this.id = id; this.gender = gender; this.score1 = score1; this.score2 = score2; this.score3 = score3; } public String toString() { return name + "\t" + id + "\t" + gender + "\t" + score1 + "\t" + score2 + "\t" + score3; } }public class 理论2 { /* * @param args */ public static void main(String[] args) { Student[] students = { new Student("张三", 1001, "男", 90, 80, 70), new Student("李四", 1002, "女", 80, 70, 60), new Student("王五", 1003, "男", 70, 60, 50), new Student("赵六", 1004, "女", 60, 50, 40) }; Arrays.sort(students, new Comparator<Student>() { public int compare(Student s1, Student s2) { int totalScore1 = s1.score1 + s1.score2 + s1.score3; int totalScore2 = s2.score1 + s2.score2 + s2.score3; return totalScore2 - totalScore1; } } ); System.out.println("姓名\t学号\t性别\t成绩1\t成绩2\t成绩3"); for (Student student : students) { System.out.println(student); } }运行结果
时间: 2023-12-06 10:39:59 浏览: 29
运行结果应该是:
姓名 学号 性别 成绩1 成绩2 成绩3
张三 1001 男 90 80 70
李四 1002 女 80 70 60
王五 1003 男 70 60 50
赵六 1004 女 60 50 40
这是按照学生的总成绩从高到低排序后的结果,其中每个学生的信息包括姓名、学号、性别、三门课的成绩。
相关问题
java.util.arrays.sort
java.util.arrays.sort是Java编程语言中的一个函数,用于对数组进行排序。这个函数可以按照数组元素的自然顺序进行排序,也可以根据指定的Comparator进行排序。使用这个函数可以方便地对数组进行排序操作,从而使代码更加简洁高效。
import java.util.Scanner; import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.ArrayList; import java.util.stream.Collectors; class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int numberOfWineshops = scanner.nextInt(); int numberOfPickedWineshops = scanner.nextInt(); int referencePrice = scanner.nextInt(); int[] WineshopPrices = new int[numberOfWineshops]; for (int i = 0; i < numberOfWineshops; i++) { WineshopPrices[i] = scanner.nextInt(); } Arrays.sort(WineshopPrices); int[][] priceDifference = new int[numberOfWineshops][2]; for (int i = 0; i < numberOfWineshops; i++) { int price = WineshopPrices[i]; priceDifference[i][0] = price; priceDifference[i][1] = Math.abs(price - referencePrice); } List<int[]> sortedPriceDifference = Arrays.stream(priceDifference) .sorted(Comparator.comparingInt(Wineshop -> Wineshop[1])) .collect(Collectors.toList()); List<Integer> pickedWineshopPrices = new ArrayList<>(); for (int i = 0; i < numberOfPickedWineshops; i++) { pickedWineshopPrices.add(sortedPriceDifference.get(i)[0]); } pickedWineshopPrices.sort(Integer::compareTo); for (int i = 0; i < pickedWineshopPrices.size(); i++) { System.out.print(pickedWineshopPrices.get(i)); if (i != pickedWineshopPrices.size() - 1) { System.out.print(" "); } } } };这段代码每行注释下
以下是每行代码的注释:
```java
import java.util.Scanner; // 引入Scanner类
import java.util.Arrays; // 引入Arrays类
import java.util.Comparator; // 引入Comparator接口
import java.util.List; // 引入List接口
import java.util.ArrayList; // 引入ArrayList类
import java.util.stream.Collectors; // 引入Collectors类
class Main { // 定义Main类
public static void main(String[] args) { // 定义程序的入口方法
Scanner scanner = new Scanner(System.in); // 创建Scanner对象并关联控制台输入
int numberOfWineshops = scanner.nextInt(); // 读取一个整数,表示酒店的数量
int numberOfPickedWineshops = scanner.nextInt(); // 读取一个整数,表示要选取的酒店的数量
int referencePrice = scanner.nextInt(); // 读取一个整数,表示参考价格
int[] WineshopPrices = new int[numberOfWineshops]; // 创建一个整型数组,存储每个酒店的价格
for (int i = 0; i < numberOfWineshops; i++) { // 循环读取每个酒店的价格
WineshopPrices[i] = scanner.nextInt(); // 读取一个整数,表示当前酒店的价格,并存储到数组中
}
Arrays.sort(WineshopPrices); // 对酒店的价格进行排序
int[][] priceDifference = new int[numberOfWineshops][2]; // 创建一个二维整型数组,存储每个酒店的价格和它与参考价格的差值
for (int i = 0; i < numberOfWineshops; i++) { // 循环计算每个酒店与参考价格的差值,并存储到数组中
int price = WineshopPrices[i]; // 获取当前酒店的价格
priceDifference[i][0] = price; // 存储当前酒店的价格
priceDifference[i][1] = Math.abs(price - referencePrice); // 存储当前酒店与参考价格的差值
}
List<int[]> sortedPriceDifference = Arrays.stream(priceDifference) // 构造一个流,将二维数组转换为流
.sorted(Comparator.comparingInt(Wineshop -> Wineshop[1])) // 对流中的元素按照第二列进行排序
.collect(Collectors.toList()); // 将排序后的流转换为List
List<Integer> pickedWineshopPrices = new ArrayList<>(); // 创建一个整型List,存储选中的酒店的价格
for (int i = 0; i < numberOfPickedWineshops; i++) { // 循环选取指定数量的酒店
pickedWineshopPrices.add(sortedPriceDifference.get(i)[0]); // 将选中的酒店的价格存储到List中
}
pickedWineshopPrices.sort(Integer::compareTo); // 对选中的酒店的价格进行排序
for (int i = 0; i < pickedWineshopPrices.size(); i++) { // 循环输出选中的酒店的价格
System.out.print(pickedWineshopPrices.get(i)); // 输出当前酒店的价格
if (i != pickedWineshopPrices.size() - 1) { // 如果当前不是最后一个酒店
System.out.print(" "); // 输出一个空格
}
}
}
}
```