package form; import java.util.ArrayList; import java.util.Scanner; public class sort { static Scanner sc = new Scanner(System.in); sort() {//按照成绩排序 int[][] grade = new int[Myclass.students.size()][2]; for (int i = 0; i < Myclass.students.size(); i++) { final Student student = Myclass.students.get(i); grade[i][0] = student.getGrade(); grade[i][1] = i; } for (int i = 0; i < Myclass.students.size(); i++) { for (int j = 1; j < Myclass.students.size() - i; j++) { if (grade[j - 1][0] > grade[j][0]) { int a = grade[j][0]; grade[j][0] = grade[j - 1][0]; grade[j - 1][0] = a; int c = grade[j][1]; grade[j][1] = grade[j - 1][1]; grade[j - 1][1] = c; } } } for (int i = Myclass.students.size() - 1; i >= 0; i--) { final Student student =Myclass. students.get(grade[i][1]); System.out.println(student.getId() + "\t\t" + student.getName() + "\t\t\t" + student.getSex() + "\t\t\t" + student.getAge() + "\t\t\t" + student.getBirthday() + "\t\t" + student.getCollege() + "\t\t\t" + student.getGrade()); } } }解释一下这段代码
时间: 2024-02-14 16:33:52 浏览: 85
这段代码定义了一个名为sort的类,其中包含一个构造方法,用于对班级内的学生按照成绩进行排序并输出排序结果。具体实现过程如下:
1. 创建一个二维数组grade,用于存储每个学生的成绩和在Myclass.students中的索引。
2. 遍历Myclass.students,将每个学生的成绩和索引存储到grade数组中。
3. 使用冒泡排序算法对grade数组进行排序,按照成绩从小到大排序。
4. 倒序遍历grade数组,根据每个学生的索引从Myclass.students中获取学生信息,并按照一定格式输出学生信息,包括学号、姓名、性别、年龄、生日、学院和成绩。
这段代码实现了对班级内学生按照成绩排序的功能,并且输出了排序结果。
相关问题
package module4; import java.util.ArrayList; import java.util.Scanner; public class Test40 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); ArrayList<Shape> list = new ArrayList<>(); … }
很抱歉,我不太明白您想要问什么问题。这段代码看起来像是Java语言中创建一个Test40类的程序,其中包含一个main方法,该方法利用Scanner类和ArrayList类实现对形状类Shape的动态数组进行输入和操作。您需要补充代码以实现完整的功能。如果您有任何具体的问题或需要帮助,请告诉我,我会尽力回答。
import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; import java.util.Hashtable; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); Set set = new LinkedHashSet(); String a; String b = sc.nextLine(); for(int i =0 ;i <n;i++){ set.add(sc.nextLine()); } System.out.println(set.size()); for(Object obj:set){ System.out.println(obj); } sc.close(); } }
这段代码实现了从标准输入中读取n个字符串,并去重后输出不重复字符串个数和每个字符串。具体实现过程如下:
1. 导入需要使用的包,包括`java.util.Scanner`、`java.util.Set`和`java.util.LinkedHashSet`。
2. 创建一个`Scanner`对象`sc`,用于从标准输入中读取数据。
3. 从标准输入中读取一个整数`n`,表示接下来要读取的字符串个数。
4. 创建一个`LinkedHashSet`对象`set`,用于存储不重复的字符串。
5. 使用`for`循环,循环读取`n`个字符串,并将其添加到`set`中。
6. 输出不重复字符串的个数,即`set`的大小。
7. 使用`for`循环遍历`set`中的每个元素,输出每个字符串。
8. 关闭`Scanner`对象。
这段代码中使用了`LinkedHashSet`来实现去重功能,与`HashSet`相比,`LinkedHashSet`能够保持元素的插入顺序,因此在输出时能够保证按照输入顺序输出。另外,由于`LinkedHashSet`继承自`HashSet`,因此也具有去重的功能。
阅读全文