0
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);
  }
}

私はとても疲れていて、この演習にここまで行きました。正しい答えが出力されるかどうかさえわかりませんが、今は double stdD = getD(avg,numbers); と言っています。互換性のないタイプがあり、互換性のないものがわからない よろしくお願いします

4

2 に答える 2

6

getD無効です。値を返しません。それは現在

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

しかし、おそらくそうあるべきです

public static double getD(double avg, ArrayList<Double> numbers){
于 2012-05-31T06:56:59.647 に答える
3
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)
于 2012-05-31T07:02:52.960 に答える