牛客编程入门—统计成绩

在这里插入图片描述

import java.util.Scanner;
import java.util.Arrays;

public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        double sum = 0.0;
        int n = scan.nextInt();	//输入科目数
        double[] s = new double[n];	//创建数组s,长度为n
        for(int i = 0; i < n; i++){
            s[i] = scan.nextDouble();	//将科目成绩存入数组
            sum = sum + s[i];	//求各科成绩之和
        }
        Arrays.sort(s)//使用Arrays中的sort()函数排序
        System.out.printf("%.2f %.2f %.2f", s[n-1], s[0], sum/n);
    }
}

//更高效的一种解法,时间和内存都能有所提升
import java.io.*;

public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine().split(" ")[0]);
        String[] str = br.readLine().split(" ");
        double max = Double.parseDouble(str[0]);
        double min = Double.parseDouble(str[0]);
        double sum = 0.0;
        for(int i = 0; i < n; i++){
            sum = sum + Double.parseDouble(str[i]);
            if(max < Double.parseDouble(str[i])){
                max = Double.parseDouble(str[i]);
            }
            if(min > Double.parseDouble(str[i])){
                min = Double.parseDouble(str[i]);
            }
        }
        System.out.print(max + "0 " + min + "0 "+ sum/5 + "0 ");
    }
}

第二种方法实现数组排序的思路:将新输入的数与max和min比较,如果比max大,那么max就往后挪;如果比min小,那么min就往前挪。最后,当所有科目成绩输入完成时,排序也完成了,与第一种解法比起来少了排序一个步骤,这样就节约了时间和内存。而且第二种解法在输出数据时也很值得学习,我们一般常用的是%.2f来实现保留两位小数,这种新的方法采用的是“0 ”来保留小数点后两位。

欢迎大家进入我们的个人博客网站一起交流讨论。http://codeingshuang.com

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值