Java找成绩最大值最小值平均值

=====taoyyz小陶©版权所有=====

实验一 输入一系列成绩,输出最高分、最低分、平均分…

要求:

  输入输出格式正确,一重循环解决全部问题。
  输入一系列成绩,输出最高分、最低分、平均分,并统计存在多少个并列最高分,要求输入输出格式正确,一重循环解决全部问题。
    输入:65 87 95 86 72 58 56 75 95 94 78…
    输出:最高分:95,最低分:56,平均分:72.36,同时存在 2 个并列最高分。
  个人觉得题目里面的平均分是有问题的,计算器算出来也是78.27

思路:

一重循环,有手就行

不过要注意输入格式,老师给的这个要求貌似是连续输入一串数字,以空格分开,那就考虑使用String类的split()方法来分割输入的字符串,返回值是个String[]字符数组。一会儿比较大小的时候利用包装类Integer的parseInt()方法转换成整型再比较。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package com.experiment.exp1;

import java.util.Scanner;

/**
* @Author taoyyz(陶俊杰)
* @Date 2021/3/2 16:12
* @Version 1.0
*/
/*
输入一系列成绩,输出最高分、最低分、平均分,并统计存在多少个并列最高分,要求输入输出格式正确,一重循环解决全部问题。
输入:65 87 95 86 72 58 56 75 95 94 78…
输出:最高分:95,最低分:56,平均分:72.36,同时存在 2 个并列最高分。
个人觉得题目里面的平均分是有问题的,计算器算出来也是78.27
*/
public class Count {
public static void main(String[] args) {
count();
}

private static void count() {
System.out.println("请输入一串成绩:");
//输入一串数字,带空格用nextLine()读到回车结束
String[] scoreStr = new Scanner(System.in).nextLine().split(" ");
//定义一个整型数组,用于把输入的数字字符串转为整型后存入
int[] scores = new int[scoreStr.length];
for (int i = 0; i < scoreStr.length; i++) {
scores[i] = Integer.parseInt(scoreStr[i]);
}
//定义最大值、最小值、平均数、并列最高分的计数器
int max = scores[0], min = scores[0], maxCount = 0;
double avg = 0;
//一重循环找出最大值、最小值、平均数、并列最高分出现的次数
for (int score : scores) {
if (max < score) {
max = score;
maxCount = 1;
} else if (max == score) {
maxCount++;
}
if (min > score) {
min = score;
}
avg += (double) score / scores.length;
}
//输出结果
System.out.println("最高分:" + max + ",最低分:" + min + ",平均分:"
+ String.format("%.2f", avg) + ",同时存在" + maxCount + "个并列最高分");
}
}

运行截图:

JavaCount01

心得:

这种题是属于比较简单的循环问题。只需事先定义一个max、min、avg的值以及一个maxCount用于统计最大值出现了几次(这一点有点坑,要注意最大值变化之后计数器要重新计算)。
说白了有手就行,这都不会建议还是重修吧😅

感谢阅读💗
------ 本文结束,感谢您的阅读 ------
看的开心的话可以请我喝杯奶茶~热狗也行呜呜呜
支付宝
微信