问题引入:
小蓝给学生们组织了一场考试,卷面总分为100分,每个学生的得分都是一个0到100的整数。
请计算这次考试的最高分、最低分和平均分。
输入格式:
输入的第一行包含一个整数n,表示考试人数。
接下来n行,每行包含一个0至100的整数,表示一个学生的得分。
输出格式:
输出三行。
第一行包含一个整数,表示最高分。
第二行包含一个整数,表示最低分。
第三行包含一个实数,四舍五入保留正好两位小数,表示平均分
样例输入:
7
80
92
56
74
88
99
10
样例输出:
99
10
71.29
解题思路:
首先当输入n个数字(代表成绩)的时候,那么就要求将这几个数字都提取到,此时可以使用List集合。(使用List集合的原因:因为List集合是有序可重复的集合,可重复指代当输入一个数字的时候,可以继续输入另一个相同的数,那么这和输入成绩的情况相似,因为输入成绩可能重复输入)。接着就可以将List集合排序,然后取到第一个和最后一个数字代表最低和最高分了。
具体代码如下:
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class Main_4 {
public static void main(String[] args) {
//定义一个List集合
List<Integer> list = new LinkedList<>();
//输入第一行表示考试人数
Scanner scanner = new Scanner(System.in);
//获取输入的人数
double n = scanner.nextInt();
//通过循环,获得每个学生的成绩
for (int i = 1;i<=n;i++){
int score = scanner.nextInt();
//将获取到的成绩存入到list集合当中(list集合是有序可重复)
list.add(score);
}
//将list集合从小到大排列
Collections.sort(list);
//获得最低分
int min_score = list.get(0);
//获得最高分
int max_score = list.get(list.size()-1);
//输出最高分
System.out.println(max_score);
//输出最低分
System.out.println(min_score);
//求平均分
int sum = 0;
//定义一个变量,作为平均值
double mean_score;
for (int i = 0;i<list.size();i++){
int score = list.get(i);
sum+=score;
}
//求出平均值
mean_score = sum/n;
//将所求得的平均值保留两位小数
System.out.println(String.format("%.2f",mean_score));
}
}```