数组基础运算:自定义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.
相关产品推荐
相关产品推荐

