Java数组工具类实战:设计不可实例化的静态工具类

实现一个工具类 MathUtils,满足以下要求:
  1. 所有方法均为静态,且该类不能从外部实例化(提示:使用私有构造器)。
  2. 提供三个静态方法:
  • maxArray(int[] arr):返回较大值;
  • minArray(int[] arr):返回较小值;
  • sumArray(int[] arr):返回数组元素之和。
    输入第一行为整数 n(数组长度),第二行为 n 个整数(数组元素),第三行为一个操作指令(maxminsum)。
    对于 maxmin,输出数组中的最大值或最小值;对于 sum,输出数组元素和。

【样例输入】

复制代码
5
3 1 4 1 5
max

【样例输出】

复制代码
5

完整代码如下:

java 复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i<n; i++){
            arr[i]=sc.nextInt();
        }
        String op = sc.next();
        int re;
        if (op.equals("max")){
            re = MathUtils.maxArray(arr);
        }else if (op.equals("min")){
            re = MathUtils.minArray(arr);
        }else if (op.equals("sum")){
            re = MathUtils.sumArray(arr);
        }else{
            re =0;
        }
        System.out.println(re);
    }
}

class MathUtils{

    private MathUtils(){

    }


    public static int maxArray(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 minArray(int[] arr){
        int min =arr[0];
        for (int i = 1; i< arr.length; i++){
            if (arr[i] < min){
                min = arr[i];
            }
        }
        return min;
    }

    public static int sumArray(int[] arr){
        int sum =arr[0];
        for (int i = 1; i< arr.length; i++){
            sum = sum + arr[i];
        }
        return sum;
    }


}

运行测试如下:

代码解释方法

  1. 逐行分析 从代码的第一行开始,逐步阅读每一行代码的功能。理解变量声明、函数定义、循环结构等基本元素的作用。

  2. 功能模块划分 将代码划分为若干功能模块,如输入处理、核心逻辑、输出结果等部分。分析每个模块的输入输出关系。

  3. 变量跟踪 记录代码中所有变量的变化过程,特别是在循环和条件语句中变量的值如何被修改。

  4. 执行流程 绘制代码的执行流程图,明确不同条件下的执行路径和可能的分支情况。

  5. 调试输出 在关键位置添加打印语句,输出中间结果,帮助理解代码的实际执行过程。

代码示例分析

python 复制代码
def calculate_average(numbers):
    total = 0
    count = 0
    for num in numbers:
        total += num
        count += 1
    return total / count if count != 0 else 0
  1. 函数定义 calculate_average函数接收一个numbers参数,表示要计算平均值的数字列表。

  2. 变量初始化 total初始化为0,用于累加所有数字的和;count初始化为0,用于记录数字的个数。

  3. 循环结构 for循环遍历numbers列表中的每个元素,将当前数字加到total中,同时count递增1。

  4. 返回结果 使用条件表达式处理除零情况,当count不为0时返回平均值,否则返回0。

数学公式表示

平均值的计算公式可以表示为:

其中:

  • (x_i) 表示列表中的第i个数字
  • (n) 表示数字的总个数
  • (\sum) 表示求和运算

常见问题排查

  1. 空列表处理 代码已通过条件表达式处理了空列表情况,避免除零错误。

  2. 非数字输入 当前实现假设输入都是数字类型,实际应用中可能需要添加类型检查。

  3. 精度问题 对于大量数据求和可能导致精度损失,可考虑使用更高精度的数值类型。

  4. 性能优化 对于极大列表,Python的内置sum函数可能更高效,但会失去计数验证的灵活性。

相关推荐
丰锋ff19 小时前
3.1 Qt事件之事件处理器
开发语言·qt
多弗朗皮卡丘19 小时前
C语言梦开始的地方7:函数
c语言·开发语言
mldong19 小时前
"applicant" 契约:退回发起人的闭环设计
java·架构
月华路20 小时前
G1 垃圾回收:脏卡队列、记忆集与并发精化线程机制
java·开发语言
gugucoding20 小时前
47. 【Java】Java内存模型(JMM)与可见性
java·开发语言
m0_3807438720 小时前
从零调用 Claude 教程
开发语言·python·node.js
起床学FPGA21 小时前
AI回答问题之后,会自动跳到最下面的问题
开发语言·javascript·ecmascript
zww894911121 小时前
校园跑腿系统开发实战指南:从需求分析到上线部署全流程解析
java
Fluxart.ai21 小时前
电商商品图审核怎么自动化?规则引擎、人工复核与发布门禁
java·前端·自动化
x_x-F1 天前
网络数据从网卡到用户态:一场基于内存所有权转移的接力赛
开发语言·网络·php