学生成绩处理
一、要求:
1、输入若干个学生成绩,形成一个成绩数组,数量自己定。
2、统计成绩的最高分和最低分以及平均分
3、统计成绩的每个分数段所占比例。(不及格,中等,良好和优秀)
4、计算该班级成绩的方差。(方差为每个成绩减去平均分的差的平方之和)
二、代码实现:
package book2;
import java.text.NumberFormat;
import java.util.Arrays;
import java.util.Scanner;
public class Test01 {
public static void main(String[] args) {
double[] arrResult = new double[6];
getResult(arrResult);
// 最小数
getMax(arrResult);
// 最大数
getMin(arrResult);
// 平均数
getAverage(arrResult);
// 方差
getVariance(arrResult);
// 成绩分段占比
getGrade(arrResult);
// System.out.println("平均成绩为:" + getAverage(arrResult));
// System.out.println("方差为:" + getVariance(arrResult));
// System.out.println("最小成绩为:" + getMin(arrResult));
}
// 输入成绩
public static void getResult(double[] arrGrade) {
Scanner sc = new Scanner(System.in);
for (int i = 0; i < arrGrade.length; i++) {
int flage = i + 1;
System.out.println("请输入第" + flage + "个成绩:");
double input = sc.nextDouble();
arrGrade[i] = input;
}
System.out.println("所有成绩为:" + Arrays.toString(arrGrade));
}
// 求最大数
public static double getMax(double[] reMax) {
double max = reMax[0];
for (int i = 0; i < reMax.length; i++) {
if (reMax[i] > max) {
max = reMax[i];
}
}
System.out.println("最大成绩为:" + max);
return max;
}
// 求最小数
public static double getMin(double[] reMin) {
double min = reMin[0];
for (int i = 0; i < reMin.length; i++) {
if (reMin[i] < min) {
min = reMin[i];
}
}
System.out.println("最小成绩为:" + min);
return min;
}
// 求平均数
public static double getAverage(double[] arrResult) {
double avernum = 0;
for (int i = 0; i < arrResult.length; i++) {
avernum += arrResult[i] / arrResult.length;
}
System.out.println("平均成绩为:" + avernum);
return avernum;
}
// 求方差
public static double getVariance(double[] result) {
double var = 0;
double aver = getAverage(result);
for (int i = 0; i < result.length; i++) {
var += (result[i] - aver) * (result[i] - aver) / result.length;
}
System.out.println("方差为:" + var);
return var;
}
// 成绩分段占比
public static void getGrade(double[] result) {
double excellent = 0;
double good = 0;
double pass = 0;
double fail = 0;
for (int i = 0; i < result.length; i++) {
if (result[i] < 60) {
fail++;
} else if (result[i] <= 70) {
pass++;
} else if (result[i] <= 80) {
good++;
} else {
excellent++;
}
}
// 创建百分数对象
NumberFormat f = NumberFormat.getPercentInstance();
// 保留两位小数
f.setMaximumFractionDigits(2);
double e = excellent / result.length;
double g = good / result.length;
double p = pass / result.length;
double fa = fail / result.length;
System.out.println("优秀占比为:" + f.format(e));
System.out.println("良好占比为:" + f.format(g));
System.out.println("及格占比为:" + f.format(p));
System.out.println("不及格占比为:" + f.format(fa));
}
}