繁体   English   中英

如何获得平均值方法以在Java中给出正确的输出

[英]How do I get the Average Method to give correct output in Java

我期望平均方法的结果为3.5,但我得到3.0。 不知道为什么。 我希望Double可以给我结果,但是没有。 java.util.ArrayList;

public class Hangman {
  public static void main(String[] args) {

    ArrayList<Integer> intList = new ArrayList<Integer>();

    intList.add(3);
    intList.add(2);
    intList.add(7);
    intList.add(2);

    System.out.println("The variance number is : ");
    System.out.println(sum(intList));
    System.out.println(intList.size());
    System.out.println(average(intList));
  }

  public static int sum(ArrayList<Integer> intList) {
    int sum = 0;
    for (int counter = 0; counter < intList.size(); counter++) {
        sum = sum + intList.get(counter);
    }
    return sum;
  }

  public static double average(ArrayList<Integer> intList) {
    double avg = sum(intList) / (intList.size());

    return avg;
  }

  public static ArrayList<Double> subtract(ArrayList<Integer> intList) {
    ArrayList<Double> subtracted = new ArrayList<Double>();
    for (double subtract : intList) {
        subtracted.add((double) (subtract - average(intList)));
    }
    return subtracted;
  }

  public static double variance(ArrayList<Integer> intList) {
    double sumDiffsSquared = 0.0;
    double avg = average(intList);
    for (int value : intList) {
        double diff = value - avg;
        diff *= diff;
        sumDiffsSquared += diff;
    }
    return (sumDiffsSquared / (intList.size() - 1));
  }

}

sum需要返回一个double,否则当您执行

sum(intList) / (intList.size());

在您的average方法中,它会将计算得出的值截断为整数,然后将该值放入双精度形式。

您的函数需要返回一个双精度值。

将方法更改为

public static double sum(ArrayList<Integer> intList) {
    double sum = 0;
    for (int counter = 0; counter < intList.size(); counter++) {
        sum = sum + intList.get(counter);
    }
    return sum;
  }

而且你应该还好

尽管avg的类型为double,但sum()方法返回的是Integer值。 所以你从sum()方法返回了一个double

double avg =(double)sum(intList)/(intList.size());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM