Java—打印对象数组列表中包含的字符串的n倍
我正在做一个练习,要求用户输入一个整数(点),直到用户输入为-1。然后,它希望我显示这些分数的平均值,通过分数的平均值(那些>50),通过百分比,最后是成绩分布,这是我面临的问题 成绩分配部分基本上根据每个输入的分数从0到5进行评分。例如,输入整数(50&&0){ System.out.println(“点平均值(通过):”+points.passingPointsAverage()); }否则{ System.out.println(“点平均值(通过):-”; } System.out.println(“通过百分比:+points.passPercentage()); System.out.println(“等级分布:”); 对于(int i=points.distribution().size()-1;i>=0;i--){ System.out.println(points.distribution().get(i)); } 打破Java—打印对象数组列表中包含的字符串的n倍,java,string,object,Java,String,Object,我正在做一个练习,要求用户输入一个整数(点),直到用户输入为-1。然后,它希望我显示这些分数的平均值,通过分数的平均值(那些>50),通过百分比,最后是成绩分布,这是我面临的问题 成绩分配部分基本上根据每个输入的分数从0到5进行评分。例如,输入整数(50&&0){ System.out.println(“点平均值(通过):”+points.passingPointsAverage()); }否则{ System.out.println(“点平均值(通过):-”; } System.out.pri
}否则,如果(input>=0&&input而不是为等级使用自定义类,则可以简单地使用从等级(整数)到该等级(整数)出现次数的映射。然后,您只能在打印时根据地图中存储的值生成星号字符串。感谢您的回复!在本课程中,我没有学习过地图,因此他们希望我找到一种不用地图的方法来解决它。还有其他建议吗?再次感谢!
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);
}