【发布时间】:2018-03-24 01:29:38
【问题描述】:
我在一个个性化的数学课上工作,我打算实现基本的运算方法,以便它们以简单的方式进行加、减、乘或除,而不必每次都调用运算符+ - * /。
public class XMath
{
public static double Sum(params double[] values)
{
double result = 0;
if (values.Length < 1 || values is null) result = 0;
else if (values.Length == 1) result = values[0];
else foreach (double value in values) result += value;
return result;
}
public static double Subtract(params double[] values)
{
double result = 0;
if (values.Length < 1 || values is null) result = 0;
else if (values.Length == 1) result = values[0];
else foreach (double value in values) result -= value;
return result;
}
public static double Multiply(params double[] values)
{
double result = 0;
if (values.Length < 1 || values is null) result = 0;
else if (values.Length == 1) result = values[0];
else foreach (double value in values) result *= value;
return result;
}
public static double Divide(params double[] values)
{
double result = 0;
if (values.Length < 1 || values is null) result = 0;
else if (values.Length == 1) result = values[0];
else foreach (double value in values) result /= value;
return result;
}
}
我的问题是 Sum 方法运行良好,但其他方法却抛出了错误的结果
所以,如果 += 有效,因为 -=、*= 和 /= 没有
【问题讨论】:
-
你说它们不起作用是什么意思?结果关闭还是抛出异常?
-
@Vache 他们抛出了错误的结果
-
预期行为与结果?
-
还应该增加一些防止被0除的防护
-
在这些行中:
if (values.Length < 1 || values is null)您应该颠倒这些检查的顺序。当条件的第二部分为真时,该行将抛出异常,因为在检查第二部分之前第一部分将失败。
标签: c# arrays operations