Java | PTA练习:作品评分

题目要求:

全国中小学生Scratch作品大赛拉开了序幕。每个参赛选手可以通过网络直接上传作品。本次比赛人人可做评委。每个网络评委可以通过网络对每一件作品进行打分。评分系统也是请程序高手设计的,能自动去掉一个最高分和一个最低分,求出平均分。

输入格式:

输入数据包括两行: 第一行为n,表示n个评委,n>2。 第二行是n个评委的打分,分数之间有一个空格。打分是可以带有小数部分的。

输出格式:

输出平均分,结果保留两位小数。

输入样例:

6
10 9 8 7.9 9 9.5

输出样例:

8.88

重点注意:

不能用nextDouble()方法一个一个读,时间会爆。

要用String[] line = in.nextLine().split(" ");一次读入一行,之后再用Float.valueOf(str)转换成float类型就行了。

代码示例:

比较基础的一版

import java.util.*;
public class Main{
    public static void main(String [] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        in.nextLine();
        float max=0;
        float min=11;
        float sum=0;
        String[] line = in.nextLine().split(" ");
        for (String str : line) {
            float b = Float.valueOf(str);
            if(b>max){
                max = b;
            }
            if(b<min){
                min = b;
            }
            sum+=b;
        }
        System.out.printf("%.2f",(sum-max-min)/(n-2));
    }
}

比较高级的一版

import java.util.*;
 
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        in.nextLine();
        float sum = 0;
        List<Float> nums = new ArrayList<>();
        String[] line = in.nextLine().split(" ");
        for (String str : line) {
            nums.add(Float.valueOf(str));
        }
        Collections.sort(nums);
        nums.remove(0);
        nums.remove(nums.size() - 1);
        for (double num : nums) {
            sum += num;
        }
        System.out.println(String.format("%.2f", sum / (n - 2)));
    }
}

两版基本思路是一样的,注意的要点都达到了。

猜你喜欢

转载自blog.csdn.net/weixin_48419914/article/details/120544013#comments_20671048