如何使用var-arg 方法减去数字。 我写了一些代码,但无法得到完美的答案......
public static double doSubtraction(double... ds)
{
double total = 0;
for(double d : ds)
{
total -= d;
}
return total;
}
double subtraction = doSubtraction(1,2,3);
System.out.println("Subtraction : "+subtraction);
实际输出:-6
但预期输出是 (1-2-3) = -4
最佳答案
两种简单的方法:
检查该元素是否为第一个,并将其添加到总计中:
public static double doSubtraction(double... ds) { double total = 0; boolean isFirst = true; for (double d : ds) { if (isFirst) { total += d; isFirst = false; } else { total -= d; } } return total; }
用第一个元素初始化总计,然后减去其他元素:
public static double doSubtraction(double... ds) { double total = ds[0]; for (int i = 1 ; i < ds.length ; i++) { total -= ds[i]; } return total; }
它们对于您的示例工作正常,但对于其他输入可能会出现一些问题:
- 如何区分结果是
0
是因为您有3-2-1
还是因为您有默认总值? - 如果第二个示例中的
ds.length
为0
会发生什么?
为了避免此类问题,您可以使用异常。您可以创建自己的异常类或实例化现有的异常类。
例如:
public static double doSubtraction(double... ds) throws Exception {
if ( ds.length <= 0 ) {
throw new Exception("No elements provided");
}
...
}
关于java - 推荐的java代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40277436/