推荐的java代码

时间:2016-10-27 06:16:34

标签: java

如何使用 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

3 个答案:

答案 0 :(得分:2)

两种简单方法:

  1. 检查元素是否是第一个,并将其添加到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;
    }
    
  2. 使用第一个元素初始化总计,然后减去其他元素:

    public static double doSubtraction(double... ds) {
        double total = ds[0];
        for (int i = 1 ; i < ds.length ; i++) {
            total -= ds[i];
        }
        return total;
    }
    
  3. 它们适用于您的示例,但它们可能会对其他输入产生一些问题:

    1. 如何区分结果是0,因为您有3-2-1,还是因为您有默认的总价值?
    2. 如果第二个示例中ds.length0会怎样?
    3. 为避免此类问题,您可以使用例外。您可以创建自己的异常类或实例化现有的异常类。

      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;
}

我希望我有所帮助。

祝你有个愉快的一天。 :)