如何使用 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
答案 0 :(得分:2)
两种简单方法:
检查元素是否是第一个,并将其添加到total:
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
会怎样?为避免此类问题,您可以使用例外。您可以创建自己的异常类或实例化现有的异常类。
E.g:
public static double doSubtraction(double... ds) throws Exception {
if ( ds.length <= 0 ) {
throw new Exception("No elements provided");
}
...
}
答案 1 :(得分:0)
您从0
开始,结果是0-1-2-3=-6
;
你可能想重新编写循环如下:
double total = ds[0];
for (int i = 1; i < ds.length; i++) {
total -= ds[i];
}
如果ds
为空,请注意此代码失败。在这种情况下,我不知道您想要返回什么,并将实施作为练习留给您。
答案 2 :(得分:0)
简单数学:0 - 1 = -1;
=&gt; -1 - 2 = -3;
=&gt; -3 - 3 = -6;
它永远不会是-4,除非你想要第一个值作为初始值,即(你从1,2和3中减去)。
public static double doSubtraction(double... ds){
double total = ds[0];
for( int i = 1; i < ds.lenght; i++ ) {
total -= ds[i];
}
return total;
}
我希望我有所帮助。
祝你有个愉快的一天。 :)