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函数可能更高效,但会失去计数验证的灵活性。

相关推荐
Ws_1 小时前
C#学习 Day2
开发语言·学习·c#
lcreek1 小时前
Java 反序列化漏洞深度解析(一):从URLDNS到真正的DNS探测
java·反序列化漏洞
杰克尼1 小时前
天机学堂复习总结(day03-day04)
java·开发语言·redis·elasticsearch·spring cloud
x***r1512 小时前
jdk-11.0.16.1_windows使用步骤详解(附JDK 11环境变量配置与验证教程)
java·开发语言·windows
弹简特2 小时前
【Java项目-轻聊】01-项目演示+项目介绍+准备工作+项目源码
java
luck_bor3 小时前
File类&递归作业
java·开发语言
武子康3 小时前
Java-07 深入浅出 MyBatis数据库一对多关系模型实战:表结构设计与查询实现
java·后端
REDcker5 小时前
Linux OverlayFS详解
java·linux·运维
Royzst5 小时前
xml知识点
java·服务器·前端
鱼鳞_6 小时前
苍穹外卖-Day08(缓存套餐)
java·redis·缓存