方法上的不兼容类型 import java.util.*; 导入java.lang.Math; 类标准差{ 公共静态void main(字符串参数[]){ ArrayList编号=新的ArrayList(); 扫描仪kb=新扫描仪(System.in); double in=kb.nextDouble(); while(in!=-1){ add(kb.nextDouble()); } 双平均值=getAvg(数字); double stdD=getD(avg,numbers);//告诉我这些是不兼容的类型 System.out.printf(“%f\n”,stdD); } 公共静态双getAvg(数组列表编号){ 双和=0.0; for(双数字:数字){ sum+=num; } 返回sum/numbers.size(); } 公共静态无效getD(双平均值,数组列表编号){ ArrayList newSet=新的ArrayList(); 对于(int i=0;i

方法上的不兼容类型 import java.util.*; 导入java.lang.Math; 类标准差{ 公共静态void main(字符串参数[]){ ArrayList编号=新的ArrayList(); 扫描仪kb=新扫描仪(System.in); double in=kb.nextDouble(); while(in!=-1){ add(kb.nextDouble()); } 双平均值=getAvg(数字); double stdD=getD(avg,numbers);//告诉我这些是不兼容的类型 System.out.printf(“%f\n”,stdD); } 公共静态双getAvg(数组列表编号){ 双和=0.0; for(双数字:数字){ sum+=num; } 返回sum/numbers.size(); } 公共静态无效getD(双平均值,数组列表编号){ ArrayList newSet=新的ArrayList(); 对于(int i=0;i,java,incompatibletypeerror,Java,Incompatibletypeerror,我太累了,我已经深入到这个练习中,我甚至不确定它是否打印出正确的答案,但现在它告诉我 双标准差=getD(平均值,数字); 有不兼容的类型,不确定什么是不兼容的 提前感谢getD无效,不返回值。现在是 import java.util.*; import java.lang.Math; class StandardDeviation{ public static void main(String args[]){ ArrayList<Double> numbers =

我太累了,我已经深入到这个练习中,我甚至不确定它是否打印出正确的答案,但现在它告诉我 双标准差=getD(平均值,数字); 有不兼容的类型,不确定什么是不兼容的
提前感谢

getD
无效,不返回值。现在是

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);
  }
}
publicstaticvoidgetd(双平均值,数组列表编号){
但很可能是这样

public static void getD(double avg, ArrayList<Double> numbers){
公共静态双getD(双平均值,数组列表编号){
您的方法没有返回任何内容。方法返回类型为void,您正在将其赋值为double。这就是为什么会出现错误。您的方法声明应该如下所示-
公共静态双getD(双平均值,数组列表编号)

Huh。我认为从void返回值是一个错误。@Tharwen好吧,有两个错误。第一个错误是他试图将void写入变量,第二个错误是试图在void方法中返回值。但是因为他想在double变量中写入值,所以实际的错误是void返回类型,而不是void方法中的返回。@tagtrae如果我理解你的答案,我只是想说,我不会期望一个void首先返回一个要编译的值。
public static double getD(double avg, ArrayList<Double> numbers){
Your method is not returning anything. method return type is void and you are assigning that into double. that's why you are getting an error. Your method declaration should be like this - 

public static double getD(double avg, ArrayList<Double> numbers)