java - 推荐的java代码

标签 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

最佳答案

两种简单的方法:

  1. 检查该元素是否为第一个,并将其添加到总计中:

    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;
    }
    
<小时/>

它们对于您的示例工作正常,但对于其他输入可能会出现一些问题:

  1. 如何区分结果是 0 是因为您有 3-2-1 还是因为您有默认总值?
  2. 如果第二个示例中的 ds.length0 会发生什么?

为了避免此类问题,您可以使用异常。您可以创建自己的异常类或实例化现有的异常类。

例如:

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/

相关文章:

java - 如何创建一个包含 shell 脚本和不在 jar 中的属性文件的 maven 程序集?

java - Chrome 不会自动打开 URL

java - Java 中的反序列化对象

java - Eclipse 应用程序运行配置到 intellij

java - 使用 HttpsURLConnection 的 InputStream 读取 xml 数据时出现意外的流结束错误

java - 用正则表达式统计单词 "\S+"

java - 替换所有出现的 .用于标准化

java - 如何在 Spring Roo 中使用 JUnit 测试? (EntityManager 的问题)

java - struts2 Action - 多个方法和多个类

java - 我无法让 Replace/replaceAll 工作