牛客编程入门—统计成绩

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 ”来保留小数点后两位。
经验分享 程序员 微信小程序 职场和发展