=====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;
public class Count { public static void main(String[] args) { count(); }
private static void count() { System.out.println("请输入一串成绩:"); 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 + "个并列最高分"); } }
|
运行截图:
心得:
这种题是属于比较简单的循环问题。只需事先定义一个max、min、avg的值以及一个maxCount用于统计最大值出现了几次(这一点有点坑,要注意最大值变化之后计数器要重新计算)。
说白了有手就行,这都不会建议还是重修吧😅
感谢阅读💗