2012-05-31 3 views
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); 
    } 
} 

Я так устал, и я получил это далеко в этом упражнении, я даже не уверен, если он печатает правильный ответ, но сейчас его говорит мне двойной stdD = GETD (среднее, число); , что существуют несовместимые типы, не уверен, что это несовместимые Заранее спасибоНесовместимые типы по методу

ответ

6

getD является недействительным, он не возвращает значение. Это в настоящее время

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

но это, вероятно, следует

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

Ха. Я думал, что было ошибкой возвращать значение из пустоты. – Tharwen

+0

, но это ошибка? он сказал мне, как исправить это. –

+0

@Tharwen хорошо нормально было две ошибки. Сначала он попытался записать пустоту в переменную, а во-вторых попытаться вернуть значение в метод void. но поскольку он хотел записать значение в двойной переменной, фактической ошибкой был тип возврата void, а не возврат в метод void. – tagtraeumer

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) 
Смежные вопросы