本文主要是介绍JAVA经典百题之求平均分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:统计十个同学的最高分,最低分以及平均分
程序分析
我们需要实现一个程序来统计十个同学的最高分、最低分和平均分。首先,让我们看看所需的步骤:
- 读取十个同学的分数。
- 计算最高分和最低分。
- 计算平均分。
- 输出最高分、最低分和平均分的结果。
让我们分别实现三种不同的方法。
方法一:使用数组存储分数
解题思路:
- 创建一个长度为10的数组,用于存储十个同学的分数。
- 使用循环依次读取十个同学的分数,并将其存储在数组中。
- 遍历数组以找到最高分和最低分。
- 计算平均分。
- 输出最高分、最低分和平均分的结果。
实现代码:
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int[] scores = new int[10];for (int i = 0; i < 10; i++) {System.out.print("Enter score for student " + (i + 1) + ": ");scores[i] = scanner.nextInt();}int maxScore = scores[0];int minScore = scores[0];int totalScore = scores[0];for (int i = 1; i < 10; i++) {if (scores[i] > maxScore) {maxScore = scores[i];}if (scores[i] < minScore) {minScore = scores[i];}totalScore += scores[i];}double averageScore = (double) totalScore / 10;System.out.println("Maximum Score: " + maxScore);System.out.println("Minimum Score: " + minScore);System.out.println("Average Score: " + averageScore);}
}
优点:
- 使用数组方便存储和处理多个分数。
- 可以处理任意数量的同学分数。
缺点:
- 需要额外的内存来存储分数。
- 程序中需要硬编码数组的长度。
方法二:使用变量记录最高分和最低分
解题思路:
- 使用循环依次读取十个同学的分数,并在读取每个分数时,更新最高分和最低分。
- 同时累加分数,以便计算平均分。
- 在循环结束后,计算平均分。
- 输出最高分、最低分和平均分的结果。
实现代码:
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int maxScore = Integer.MIN_VALUE;int minScore = Integer.MAX_VALUE;int totalScore = 0;for (int i = 0; i < 10; i++) {System.out.print("Enter score for student " + (i + 1) + ": ");int score = scanner.nextInt();maxScore = Math.max(maxScore, score);minScore = Math.min(minScore, score);totalScore += score;}double averageScore = (double) totalScore / 10;System.out.println("Maximum Score: " + maxScore);System.out.println("Minimum Score: " + minScore);System.out.println("Average Score: " + averageScore);}
}
优点:
- 不需要额外的内存来存储分数。
- 适用于处理少量数据。
缺点:
- 不适用于处理动态数量的同学分数。
- 程序中需要硬编码循环的次数。
方法三:使用集合记录分数
解题思路:
- 使用集合(如ArrayList)来存储十个同学的分数,这允许处理不定数量的分数。
- 使用循环依次读取十个同学的分数,并将其添加到集合中。
- 使用集合中的方法(如Collections.max()、Collections.min())来找到最高分和最低分。
- 计算平均分。
- 输出最高分、最低分和平均分的结果。
实现代码:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);List<Integer> scores = new ArrayList<>();for (int i = 0; i < 10; i++) {System.out.print("Enter score for student " + (i + 1) + ": ");int score = scanner.nextInt();scores.add(score);}int maxScore = Collections.max(scores);int minScore = Collections.min(scores);int totalScore = 0;for (int score : scores) {totalScore += score;}double averageScore = (double) totalScore / 10;System.out.println("Maximum Score: " + maxScore);System.out.println("Minimum Score: " + minScore);System.out.println("Average Score: " + averageScore);}
}
优点:
- 可以处理不定数量的同学分数。
- 使用集合函数简化了查找最高分和最低分的过程。
缺点:
- 需要额外的内存来存储分数。
- 略微复杂,特别是对于小规模数据。
总结
在这个问题中,推荐使用方法三,即使用集合记录分数。这种方法具有更大的灵活性,可以处理不定数量的同学分数,而且代码相对简洁。方法二适用于处理少量数据,但不适合处理动态数量的同学分数。方法一适用于处理多个分数,但需要硬编码数组的长度,不够灵活。
这篇关于JAVA经典百题之求平均分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!