《Java实战:评委打分系统设计与实现》

发布于:2025-04-13 ⋅ 阅读:(30) ⋅ 点赞:(0)

一、需求背景

实现一个评委打分计算系统,功能包括:

  1. 录入功能:接收6位评委的分数输入(0-100分)
  2. 统计功能:计算最高分、最低分、总分
  3. 结果计算:排除最高分和最低分后,计算平均分

二、代码逐段解析

1. 主程序逻辑

public static void main(String[] MakeItPossible) {
    int[] scores = getJudgesScore();  // 获取评委打分
    int max = getMax(scores);         // 计算最高分
    int min = getMin(scores);         // 计算最低分
    int sum = getSum(scores);         // 计算总分
    int avg = (sum - max - min)/(scores.length-2); // 计算平均分
}
  • 流程控制:通过方法调用拆分各功能模块
  • 算法公式
    [
    \text{平均分} = \frac{\text{总分} - \text{最高分} - \text{最低分}}{\text{评委数} - 2}
    ]

2. 分数录入模块

public static int[] getJudgesScore() {
    int[] scoresArray = new int[6];       // 固定6位评委
    Scanner sc = new Scanner(System.in);
    for(int i=0; i<scoresArray.length;) { // 无i++,通过条件控制循环
        System.out.print("请第"+(i+1)+"位评委打分:");
        int score = sc.nextInt();
        if (score >=0 && score <=100) {   // 输入验证
            scoresArray[i] = score;
            i++;                          // 仅当输入合法时递增索引
        } else {
            System.out.println("输入错误!分数需在0-100之间");
        }
    }
    return scoresArray;
}
  • 核心特性
    • 输入有效性检查(0-100分)
    • 强制要求合法输入才能继续
  • 设计亮点
    通过控制循环变量 i 的自增逻辑,实现“输入错误时原地重试”。

3. 极值计算模块

最大值计算
public static int getMax(int[] arr) {
    int max = arr[0];                   // 假设第一个元素是最大值
    for(int i=1; i<arr.length; i++) {   // 从第二个元素开始比较
        if(arr[i] > max) max = arr[i];  // 更新最大值
    }
    return max;
}
最小值计算
public static int getMin(int[] arr) {
    int min = arr[0];                   // 假设第一个元素是最小值
    for(int i=0; i<arr.length; i++) {   // 遍历所有元素
        if(arr[i] < min) min = arr[i];  // 更新最小值
    }
    return min;
}
  • 算法对比
    方法 初始假设 遍历起点 遍历方向
    getMax arr[0] i=1 正向
    getMin arr[0] i=0 正向

4. 总分计算模块

public static int getSum(int[] arr) {
    int sum = 0;
    for(int num : arr) {  // 增强for循环遍历数组
        sum += num;       // 累加每个元素
    }
    return sum;
}
  • 代码亮点:使用增强for循环简化遍历逻辑。

三、完整代码示例

package com.insightfuture.test;

import java.util.Scanner;

public class JudgesScore {
    public static void main(String[] args) {
        int[] scores = getJudgesScore();
        int max = getMax(scores);
        int min = getMin(scores);
        int sum = getSum(scores);
        int avg = (sum - max - min) / (scores.length - 2);
        System.out.println("最终平均分:" + avg);
    }

    public static int[] getJudgesScore() {
        int[] scores = new int[6];
        Scanner sc = new Scanner(System.in);
        for(int i=0; i<scores.length;) {
            System.out.print("请第" + (i+1) + "位评委打分:");
            int score = sc.nextInt();
            if(score >=0 && score <=100) {
                scores[i] = score;
                i++;
            } else {
                System.out.println("分数必须在0-100之间!");
            }
        }
        return scores;
    }

    public static int getMax(int[] arr) {
        int max = arr[0];
        for(int i=1; i<arr.length; i++) {
            if(arr[i] > max) max = arr[i];
        }
        return max;
    }

    public static int getMin(int[] arr) {
        int min = arr[0];
        for(int num : arr) {
            if(num < min) min = num;
        }
        return min;
    }

    public static int getSum(int[] arr) {
        int sum = 0;
        for(int num : arr) {
            sum += num;
        }
        return sum;
    }
}

四、运行示例

请第1位评委打分:85
请第2位评委打分:92
请第3位评委打分:78
请第4位评委打分:95
请第5位评委打分:88
请第6位评委打分:90
最终平均分:88

五、下篇预告:系统增强方向

在《评委打分系统实战(下)》中,我们将实现以下增强功能:

  1. 动态评委数量:支持自定义评委人数
  2. 输入增强校验:防止非数字输入导致崩溃
  3. 分数分布分析:统计各分数段比例
  4. 异常处理机制:文件保存失败时的容错处理
  5. 可视化界面:使用Swing开发图形化界面

预览代码片段

// 动态评委人数
int judgeCount = sc.nextInt();
int[] scores = new int[judgeCount];

// 异常处理示例
try {
    saveToFile(scores);
} catch (IOException e) {
    System.out.println("文件保存失败:" + e.getMessage());
}

#Java实战 #评分系统 #数组操作 #算法基础
点击关注,及时获取下篇更新! 🔔


网站公告

今日签到

点亮在社区的每一天
去签到