按要求编写下列程序: (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 15:08:23 浏览: 95
好的,我可以帮你编写这个程序,下面是代码实现:
Student类:
```
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;
}
public int getSno() {
return sno;
}
public int getSclass() {
return sclass;
}
public int getScore() {
return score;
}
@Override
public String toString() {
return sno + "\t" + sclass + "\t" + score;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Student) {
Student s = (Student) obj;
return this.sclass == s.sclass;
}
return false;
}
@Override
public int compareTo(Student s) {
return s.score - this.score;
}
}
```
主类:
```
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Student[] students = new Student[20];
Random random = new Random();
Scanner scanner = new Scanner(System.in);
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("与第一个学生同班的学生有:");
for (int i = 1; i < students.length; i++) {
if (students[i].equals(students[0])) {
System.out.println(students[i].toString());
}
}
Arrays.sort(students);
System.out.println("按成绩降序排序后的学生信息为:");
for (Student student : students) {
System.out.println(student.toString());
}
}
}
```
程序的实现步骤如下:
1. 定义一个Student类,包含三个私有成员变量sno、sclass和score,以及构造方法、toString()方法、equals()方法和compareTo()方法。
2. 在主类中创建一个包含20个Student类对象的数组,并使用循环输入20个学生信息存入数组,其中学号依次为1-20,班级1-3随机产生,成绩90-100随机产生。
3. 使用增强for循环输出学生数组的信息,其中每个学生信息调用toString()方法输出。
4. 通过调用equals()方法找出与第一个学生同班的学生并输出。
5. 调用Arrays类的sort()方法对学生数组按成绩降序排列。
6. 使用增强for循环输出排序后的学生信息。
这个程序可以实现你的要求,你可以尝试运行一下看看效果。
阅读全文