题目是:要求用java输出学生的班级,姓名,平时成绩,考试成绩,总成绩(0.3*平时+0.7*考试)以及等级。

以类表示学生和班级;使用类的构造方法和封装;使用arrays.sort排序。
等级划分为:100~80为A,79~60为B,60以下为C"。
谢谢大家。

不知道输入是要如何输入的,如果是键盘输入那工作量就大了,题目要求使用类的构造方法,那我就直接用构造方法初始化,省得你再一个个从键盘输入。

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Arrays;
import java.util.Comparator;

public class TestStudent {

public static void main(String[] args) {
ClassStudent[] students = new ClassStudent[10];
students[0] = new ClassStudent("301", "Leon", 80.3, 85);
students[1] = new ClassStudent("302", "Ana", 77.5, 89);
students[2] = new ClassStudent("303", "Shark", 60, 65);
students[3] = new ClassStudent("401", "Reek", 50, 60);
students[4] = new ClassStudent("402", "Antoni", 90.2, 93);
students[5] = new ClassStudent("403", "Jezus", 100, 80);
students[6] = new ClassStudent("301", "Aux", 81, 75);
students[7] = new ClassStudent("302", "Biu", 77.8, 80);
students[8] = new ClassStudent("303", "Bomb", 79.1, 90);
students[9] = new ClassStudent("401", "Bob", 90, 88);
Arrays.sort(students, new Comparator<ClassStudent>() {
@Override
public int compare(ClassStudent s1, ClassStudent s2) {
int result;
if(null == s1 && null == s2) {
result = 0;
} else if(null == s1) {
result = 1;
} else if(null == s2) {
result = -1;
}
result = (int) Math.ceil(s1.getTotalScore() - s2.getTotalScore());
result = -result; // 如果要降序就加上这一句,升序的话就去掉这一句
return result;
}

@Override
public Comparator<ClassStudent> reversed() {
return null;
}

});
System.out.println("班级\t姓名\t平时成绩\t考试成绩\t总成绩\t等级");
for(ClassStudent student : students) {
System.out.println(student);
}
}

}
class ClassStudent {
private String klass;
private String name;
private double usualScore;
private double examScore;
private double totalScore;
private char rank;

public ClassStudent(String klass, String name, double usualScore,
double examScore) {
this.klass = klass;
this.name = name;
this.usualScore = usualScore;
this.examScore = examScore;
this.totalScore = usualScore * 0.3 + examScore * 0.7;
if(totalScore >= 80) {
rank = 'A';
} else if (totalScore >= 60) {
rank = 'B';
} else {
rank = 'C';
}
}

public double getTotalScore() {
return totalScore;
}

@Override
public String toString() {
return String.format("%s\t%s\t%.1f\t%.1f\t%5s\t%c",
klass, name, usualScore, examScore,
new BigDecimal(totalScore).setScale(1, RoundingMode.HALF_UP), rank);
}

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-11-29
这些成绩如何输入的呢,给个现有的,帮你写这个输出的。
相似回答