方法上的类型不兼容

Mat*_*han 0 java incompatibletypeerror

import java.util.*;
import java.lang.Math;

class StandardDeviation{
  public static void main(String args[]){
    ArrayList<Double> numbers = new ArrayList<Double>();
    Scanner kb=new Scanner(System.in);
    double in=kb.nextDouble();
    while(in!=-1){
        numbers.add(kb.nextDouble()); 
    }
    double avg = getAvg(numbers);
    double stdD = getD(avg,numbers);// tells me these are incompatible types
    System.out.printf("%f\n",stdD);
  }

  public static double getAvg(ArrayList<Double> numbers){
    double sum = 0.0;
    for (Double num : numbers){
        sum+= num;
    }
    return sum/numbers.size();
  }

  public static void getD(double avg, ArrayList<Double> numbers){
    ArrayList<Double> newSet = new ArrayList<Double>();
    for (int i = 0; i < numbers.size(); i++){
        newSet.add(Math.pow(numbers.get(i)-avg,2));
    }
    double total = 0.0;
    for (Double num : newSet){
        total += num;
    }
    double mean =(total/numbers.size());
    return Math.sqrt(mean);
  }
}
Run Code Online (Sandbox Code Playgroud)

我很累,我在这个练习中做得很远,我甚至不确定它是否打印出正确答案,但现在它告诉我双stdD = getD(平均,数字); 有不兼容的类型,不确定什么是不兼容的,提前谢谢

tag*_*mer 6

getD无效,它不返回值.这是目前的

public static void getD(double avg, ArrayList<Double> numbers){
Run Code Online (Sandbox Code Playgroud)

但它应该是

public static double getD(double avg, ArrayList<Double> numbers){
Run Code Online (Sandbox Code Playgroud)