尝试计算一组数据的方差时出现编译器错误

Compiler error when trying to calculate Variance of a set of data

我正在尝试计算用户输入的一组数据的方差。但是,当我 运行 我的程序时,我收到错误消息:class 测试中的方法差异无法应用于给定类型。 到目前为止,这是我的代码:

public static double variance(ArrayList<Double> numbers, double mean) {

    double variance = 0;
    for (int i = 0; i <numbers.size(); i++) {
        variance = variance + Math.pow((numbers.get(i) - mean(numbers)), 2);
    }
    return variance/numbers.size();
}
public static void main(String[] args) {

    Scanner keyboard = new Scanner(System.in);
    System.out.println("Enter data set: ");
    ArrayList<Double> nums = new ArrayList<Double>();

    while (keyboard.hasNextDouble()) {
        nums.add(keyboard.nextDouble());
    }
    double numbs = mean(nums);
    System.out.println("Mean = " + numbs);
    double numbs2 = variance(nums);
    System.out.println("Variance = " + numbs2);
  }
}

我在方差方法之上有一个计算 ArrayList 均值的方法,尽管我在方差方法中初始化了双均值,但它无论如何都有用吗?

你的 variance 方法需要 2 参数但是当你调用它时你只需要 one param

  1. 调整您的 variance 方法以接受一个参数,就像这样

       public static double variance(ArrayList<Double> numbers) {
            double variance = 0;
            for (int i = 0; i <numbers.size(); i++) {
                variance = variance + Math.pow((numbers.get(i) - mean(numbers)), 2);
            }
            return variance/numbers.size();
        }
    
  2. 定义方法mean类似这样,其他的应该没问题

    public static double mean(ArrayList<Double> numbers) {
       double sum = 0;
       for (int i = 0; i < numbers.size(); i++) {
         sum += numbers.get(i);
       }
      return sum / numbers.size();
    }