java题目描述:先输入n,再输入n个学生的学号、姓名、和三科成绩。按名次输出学生成绩表。 输入:第一行是一个整数n,接着输入n行数据,每行包括学生的学号、姓名、三科成绩 输出:先输出一行表头信息,按名次顺序输出n行,每行包括名次、学号、姓名、三科成绩、总分 样例输入: 3 001 a 80 80 75 002 b 90 90 70 003 c 90 83 92 样例输出: order no name JAVA math eng total 1 003 c 90.0 83.0 92.0 265.0 2 002 b 90.0 90.0 70.0 250.0 3 001 a 80.0 80.0 75.0 235.0 提示:输出的每项之间用\t隔开
时间: 2024-02-10 17:05:01 浏览: 148
以下是Java代码实现:
```
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
Student[] students = new Student[n]; // 创建一个Student类型的数组
for (int i = 0; i < n; i++) {
String no = input.next();
String name = input.next();
double java = input.nextDouble();
double math = input.nextDouble();
double eng = input.nextDouble();
students[i] = new Student(no, name, java, math, eng); // 创建一个Student对象并存储到数组中
}
Arrays.sort(students); // 对数组按照总分进行排序
// 输出表头
System.out.println("order\tno\tname\tJAVA\tmath\teng\ttotal");
// 输出学生成绩表
for (int i = 0; i < n; i++) {
System.out.println((i + 1) + "\t" + students[i].getNo() + "\t" + students[i].getName() + "\t" + String.format("%.1f", students[i].getJava())
+ "\t" + String.format("%.1f", students[i].getMath()) + "\t" + String.format("%.1f", students[i].getEng()) + "\t" + String.format("%.1f", students[i].getTotal()));
}
}
}
class Student implements Comparable<Student> { // 实现Comparable接口,重写compareTo方法
private String no;
private String name;
private double java;
private double math;
private double eng;
private double total;
public Student(String no, String name, double java, double math, double eng) {
this.no = no;
this.name = name;
this.java = java;
this.math = math;
this.eng = eng;
this.total = java + math + eng;
}
public String getNo() {
return no;
}
public String getName() {
return name;
}
public double getJava() {
return java;
}
public double getMath() {
return math;
}
public double getEng() {
return eng;
}
public double getTotal() {
return total;
}
@Override
public int compareTo(Student o) {
if (this.total > o.total) {
return -1; // 返回-1表示将当前对象排在前面
} else if (this.total < o.total) {
return 1; // 返回1表示将当前对象排在后面
} else {
return 0; // 返回0表示两个对象相等
}
}
}
```
该程序首先读取输入的n和n个学生的信息,将每个学生的信息封装成一个Student对象,并存储在一个Student类型的数组中。然后,使用Java中的Arrays.sort方法对数组进行排序,排序规则是按照总分从大到小排序。最后,遍历数组,按照格式输出学生成绩表。注意,输出的每项之间要用\t隔开,可以使用Java中的String.format方法来实现。
阅读全文