前一半的需求:
随机模拟100个学生的成绩,成绩在20分到100之间,
然后计算一下平均分,要求保留2位小数,四舍五入的算法。
然后再计算: 0-10分阶段的人数以及百分比
11-20:人数、百分比
90-100:人数、百分比
及格人数、百分比
-------------------------------------------------------------------------------------------
public class Test1 {
public static void main(String[] args) {
pingJunShu();
}
private static void pingJunShu() {
int[] arr = new int[110];
int sum = 0;
int i20 = 0;
int i50 = 0;
int i60 = 0;
int i70 = 0;
int i80 = 0;
int i90 = 0;
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random()*80)+20; //随机成绩在20-100之间
System.out.println("arr["+i+"]的分数:"+arr[i]+" ");
sum += arr[i];
if(arr[i]>=0 && arr[i]< 20){
i20++;
}else if(arr[i]>=20 && arr[i]< 60){
i50++;
}else if(arr[i]>=60 && arr[i]< 70){
i60++;
}else if(arr[i]>=70 && arr[i]< 80){
i70++;
}else if(arr[i]>=80 && arr[i]< 90){
i80++;
}else if(arr[i]>=90 && arr[i]< 100){
i90++;
}
}
System.out.println("总成绩:"+sum);
BigDecimal bd1 = new BigDecimal(sum);
BigDecimal bd2 = new BigDecimal(arr.length);
BigDecimal bd3 = bd1.divide(bd2, 2, 4);
System.out.println("平均数:"+bd3);
String s1 = baiFenBi(arr, i20);
String s2 = baiFenBi(arr, i50);
String s3 = baiFenBi(arr, i60);
String s4 = baiFenBi(arr, i70);
String s5 = baiFenBi(arr, i80);
String s6 = baiFenBi(arr, i90);
System.out.println("成绩在20~59的人数共计:"+i50+"人;百分比:"+s2);
System.out.println("成绩在60~69的人数共计:"+i60+"人;百分比:"+s3);
System.out.println("成绩在70~79的人数共计:"+i70+"人;百分比:"+s4);
System.out.println("成绩在80~89的人数共计:"+i80+"人;百分比:"+s5);
System.out.println("成绩在90~99的人数共计:"+i90+"人;百分比:"+s6);
}
public static String baiFenBi(int[] arr, int i20) {
BigDecimal bd6 = new BigDecimal(i20).divide(new BigDecimal(arr.length),4, 4);
/*BigDecimal bd7 = new BigDecimal("100");
String s = bd6.multiply(bd7)+"%";*/
NumberFormat nf = NumberFormat.getPercentInstance();
nf.setMinimumFractionDigits(2);
String s = ""+nf.format(bd6.doubleValue());
return s;
}
}
|
|