写了一个Java练习题
已知每个学生这次成绩(0~100)范围内的整数
* 1.求平均、最高和最低成绩
* 2.统计考试成绩的分布率
最后判读成绩分布规律 变量设置较多 有没有什么办法优化
import java.util.Scanner;
public class Studentgrade_out {
/**
* 需求:
* 已知每个学生这次成绩(0~100)范围内的整数
* 1.求平均、最高和最低成绩
* 2.统计考试成绩的分布率
*/
class studentgrade_in{ //学生成绩内部类
int[] grede;
public void grade(int number){ //接收成绩方法
grede=new int[number]; //定义数组 给定长度
Scanner scanner = new Scanner(System.in);//键盘输入成绩
System.out.println("请输入"+number+"位学生成绩(百分制):");
for (int i = 0; i <number; i++) {
grede[i]=scanner.nextInt(); //给数组赋值
}
// for (int i = 0; i < grede.length; i++) {
// System.out.println(grede[i]);
// }
}
public void judge(int number){ //判读数据的最大和最小数
/**
* 冒泡排序 比较相邻数据元素大小 把数组从大到小排序
*/
for (int i = 0; i < grede.length; i++) {
for (int j = 0; j < grede.length-1-i; j++) {
if (grede[j]>grede[j+1]) {
/**
* 引用中间变量 交换前后数据 将较大后移
*/
int temp =grede[j];
grede[j]=grede[j+1];
grede[j+1]=temp;
}
}
}
//此时数组顺序从小到大排序,第一个数据是最小值,最后一个数据是最大值
System.out.println("最小值是:"+grede[0]);
System.out.println("最大值是:"+grede[grede.length-1]);
}
public void sum(int number) { //平均成绩
int sum=0; //number个数据相加总和
for (int i = 0; i < number; i++) {
sum+=grede[i];
}
//成绩总和/人数 平均成绩
System.out.println("这次测试平均成绩是:"+sum/number);
}
public void stage(int number){ //统计考试成绩分布规律
int l=0,j=0,k=0,g=0,f=0,d=0,q=0; //定义变量记录每个分数段的人数
for (int i = 0; i < number; i++) { //遍历数组
int a=grede[i]; //接收数组元素进行判断
if (a < 60) {
l++;
}else if (a>=60) {
d++;
}
if (a >=60&&a<70 ) {
k++;
}else if (a >=70&&a<80) {
g++;
}else if(a>=80&&a<90){
f++;
}else if (a>=90&&a<=100){
q++;
}
}
System.out.println("不及格人数有"+l+"个");
System.out.println("及格人数有"+d+"个");
System.out.println("60-70的人数有"+k+"个");
System.out.println("70-80的人数有"+g+"个");
System.out.println("80-90的人数有"+f+"个");
System.out.println("90-100的人数有"+q+"个");
}
}
/*
外部类方法
*/
public void get(int number){ //实例化内部类调用方法(内部类非静态;main方法不能直接调用)
studentgrade_in si = new studentgrade_in();
si.grade(number);
si.judge(number);
si.sum(number);
si.stage(number);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请问有少位学生成绩输入:");
int number = scanner.nextInt();
/**
* main() 只能调用静态方法
*
* 也可以将 get 方法写成静态方法
*/
Studentgrade_out so = new Studentgrade_out(); //实例化外部类
so.get(number); //调用get();方法
}
}