【发布时间】:2020-10-18 16:59:37
【问题描述】:
我正在做一个练习,要求用户输入一个整数(点),直到用户输入为 -1。然后它要我显示这些分数的平均值、及格分数的平均值(那些> 50)、及格百分比,最后是我面临的问题部分的成绩分布。
Grade Distribution 部分基本上根据每个输入的点数奖励从 0 到 5 的等级。例如,输入整数 50 &&
经过数小时的尝试,我设法解决了这个问题,但可能是有史以来最不可靠的方式。我有三个java文件。一份用于主班,一份用于班级积分,一份用于班级成绩。在 Grades 类中,我只有两个实例变量,一个 string(stars) 和一个整数等级。在我计算平均值等的 Points 类中,我还创建了一个新的 ArrayList,并通过我在主程序中调用的名为 createFiveGrades 的方法添加了 5 个单独的 Grades 对象。然后通过 pointsToGrade 方法(我再次在 main 中调用)我将积分转换为等级,并在适用时在上述 ArrayList 的对象中添加星号。 班级积分:
public class Points {
private int points;
private int counter;
private int passingPoints;
private int passingCounter;
private ArrayList<Grades> distr;
public Points() {
this.points = 0;
this.counter = 0;
this.passingPoints = 0;
this.passingCounter = 0;
this.distr = new ArrayList();
}
public void addPoints(int points) {
//code
}
public double totalPointsAverage() {
//code
}
public int getPassingPoints() {
//code
}
public double passingPointsAverage() {
//code
}
public double passPercentage() {
//code
}
public void createFiveGrades() {
this.distr.add(new Grades());
this.distr.get(0).setGrade(0);
this.distr.add(new Grades());
this.distr.get(1).setGrade(1);
this.distr.add(new Grades());
this.distr.get(2).setGrade(2);
this.distr.add(new Grades());
this.distr.get(3).setGrade(3);
this.distr.add(new Grades());
this.distr.get(4).setGrade(4);
this.distr.add(new Grades());
this.distr.get(5).setGrade(5);
}
public void pointsToGrade(int po) {
if (po < 50) {
this.distr.get(0).addStars("*");
} else if (po >= 50 && po < 60) {
this.distr.get(1).addStars("*");
} else if (po >= 60 && po < 70) {
this.distr.get(2).addStars("*");
} else if (po >= 70 && po < 80) {
this.distr.get(3).addStars("*");
} else if (po >= 80 && po < 90) {
this.distr.get(4).addStars("*");
} else if (po >= 90 && po <= 100) {
this.distr.get(5).addStars("*");
}
}
public ArrayList<Grades> distribution() {
return this.distr;
}
班级成绩:
public class Grades {
private int grade;
private String stars;
public Grades() {
this.grade = 0;
this.stars = "";
}
public void setGrade(int n) {
this.grade = n;
}
public void addStars(String str) {
this.stars += str;
}
public String toString() {
return this.grade + ": " + stars;
}
}
主要:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Points points = new Points();
points.createFiveGrades();
System.out.println("Enter points in totals, -1 stops:");
while (true) {
int input = Integer.valueOf(scanner.nextLine());
if (input == -1) {
System.out.println("Point average (all): " + points.totalPointsAverage());
if (points.getPassingPoints() > 0) {
System.out.println("Point average (passing): " + points.passingPointsAverage());
} else {
System.out.println("Point average (passing): -");
}
System.out.println("Pass percentage: " + points.passPercentage());
System.out.println("Grade distribution: ");
for (int i=points.distribution().size()-1; i>=0; i--) {
System.out.println(points.distribution().get(i));
}
break;
} else if (input >= 0 && input <= 100) {
points.addPoints(input);
points.pointsToGrade(input);
}
问题:还有哪些其他方式可以更好地实施该计划的成绩分配功能?请不要给我解决方案,而是要考虑的事情。谢谢!
【问题讨论】: