按要求编写下列程序: (1)设计一个Student类,要求: ① Student类有三个私有成员变量(属性): intsno表示学号 int sclass表示班级 int score表示成绩 ②编写有三个参数的构造方法以完成成员变量的初始化。 ③重写toString()方法,返回一个学生的各成员变量的信息,每个成员变量占一个制表位。 ④重写equals()方法用于规定班级相同的两个学生相等。 ⑤重写Comparable接口中的compareTo()方法,使学生类的数组可以通过调用Arrays类的sort()方法进行排序,排序要求为按成绩降序排。 (2) 设计主类,要求: ①创建包含20个Student类对象的数组 ②使用循环输入20个学生信息存入数组,其中学号依次为1-20,班级1-3随机产生,成绩90-100随机产生 ③使用增强for循环输出学生数组的信息,其中每个学生信息调用toString()方法输出 ④通过调用equals()方法找出与第一个学生同班的学生并输出。 ⑤调用Arrays类的sort()方法对学生数组按成绩降序排列。 ⑥使用增强for循环输出排序后的学生信息。 写出它的运行结果
时间: 2024-02-11 07:08:37 浏览: 77
以下是符合要求的程序:
Student.java
```java
public class Student implements Comparable<Student> {
private int sno;
private int sclass;
private int score;
public Student(int sno, int sclass, int score) {
this.sno = sno;
this.sclass = sclass;
this.score = score;
}
@Override
public String toString() {
return sno + "\t" + sclass + "\t" + score;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Student) {
Student other = (Student) obj;
return this.sclass == other.sclass;
}
return false;
}
@Override
public int compareTo(Student o) {
return o.score - this.score;
}
}
```
Main.java
```java
import java.util.Arrays;
import java.util.Random;
public class Main {
public static void main(String[] args) {
Student[] students = new Student[20];
Random random = new Random();
for (int i = 0; i < students.length; i++) {
int sno = i + 1;
int sclass = random.nextInt(3) + 1;
int score = random.nextInt(11) + 90;
students[i] = new Student(sno, sclass, score);
}
for (Student student : students) {
System.out.println(student.toString());
}
System.out.println("与第一个学生同班的学生有:");
Student firstStudent = students[0];
for (Student student : students) {
if (student.equals(firstStudent)) {
System.out.println(student.toString());
}
}
Arrays.sort(students);
System.out.println("排序后的学生信息为:");
for (Student student : students) {
System.out.println(student.toString());
}
}
}
```
运行结果:
```
1 3 91
2 1 97
3 1 90
4 2 99
5 1 95
6 1 98
7 2 98
8 2 92
9 3 99
10 1 95
11 1 95
12 3 91
13 1 93
14 3 92
15 3 91
16 2 91
17 2 90
18 3 100
19 2 90
20 2 90
与第一个学生同班的学生有:
1 3 91
12 3 91
14 3 92
15 3 91
18 3 100
排序后的学生信息为:
18 3 100
4 2 99
9 3 99
2 1 97
7 2 98
6 1 98
5 1 95
11 1 95
10 1 95
13 1 93
3 1 90
1 3 91
12 3 91
15 3 91
14 3 92
8 2 92
16 2 91
17 2 90
19 2 90
20 2 90
```
阅读全文