题目要求:
全国中小学生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)));
}
}
两版基本思路是一样的,注意的要点都达到了。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/103203.html