You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

数组基础运算:自定义XMath类实现四则运算方法的技术需求

自定义XMath类:完善基础加减乘除运算

我来帮你完善这个个性化的XMath类吧!你已经实现了Sum方法,咱们先优化它的逻辑,再把剩下的减法、乘法、除法方法补全,让这个类能更简便地完成基础运算,不用每次直接调用运算符~

优化后的Sum方法

你现有的Sum方法逻辑有点冗余,其实foreach循环在数组长度为1的时候也能正常执行,我们可以简化判断逻辑,同时更严谨地处理null参数的情况:

public class XMath
{
    public static double Sum(params double[] values)
    {
        // 处理null或空数组的情况,直接返回0
        if (values == null || values.Length == 0)
            return 0;
        
        double result = 0;
        foreach (double value in values)
            result += value;
        
        return result;
    }
}

实现减法(Subtract)方法

减法需要考虑不同参数数量的场景:如果只传一个参数,返回它的相反数;如果传多个参数,用第一个数依次减去后面所有数:

public static double Subtract(params double[] values)
{
    if (values == null || values.Length == 0)
        return 0;
    
    // 单个参数时,返回该数的相反数
    if (values.Length == 1)
        return -values[0];
    
    double result = values[0];
    for (int i = 1; i < values.Length; i++)
        result -= values[i];
    
    return result;
}

实现乘法(Multiply)方法

乘法的空数组/空参数场景我们返回1(乘法的单位元),多个参数则依次相乘:

public static double Multiply(params double[] values)
{
    if (values == null || values.Length == 0)
        return 1;
    
    double result = 1;
    foreach (double value in values)
        result *= value;
    
    return result;
}

实现除法(Divide)方法

除法要特别注意除零异常,同时处理不同参数数量的情况:单个参数返回1除以该数;多个参数用第一个数依次除以后面的数,过程中要检查除数是否为0:

public static double Divide(params double[] values)
{
    if (values == null || values.Length == 0)
        throw new ArgumentException("除法运算至少需要传入一个参数");
    
    if (values.Length == 1)
    {
        if (values[0] == 0)
            throw new DivideByZeroException("不能除以零");
        return 1 / values[0];
    }
    
    double result = values[0];
    for (int i = 1; i < values.Length; i++)
    {
        if (values[i] == 0)
            throw new DivideByZeroException("除法运算中遇到零除数");
        result /= values[i];
    }
    
    return result;
}

使用示例

现在你可以这样轻松调用这些方法了:

// 求和:1+2+3+4 = 10
double sumResult = XMath.Sum(1, 2, 3, 4);
// 减法:10-3-2 = 5
double subResult = XMath.Subtract(10, 3, 2);
// 乘法:2*3*4 = 24
double mulResult = XMath.Multiply(2, 3, 4);
// 除法:20/2/5 = 2
double divResult = XMath.Divide(20, 2, 5);

内容的提问来源于stack exchange,提问作者Héctor M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:27:34