我究竟做错了什么?

中位数始终为-0.5结果或0.5(如果((m) + (m+1))/2;

public static double mediana(List<Double> liczby ){
    Collections.sort(liczby);
    int n = liczby.size()/2;
    double m;
    m = get(n);
    if (liczby.size() % 2 == 0){

        return  ((m) + (m-1))/2;

    }
    else {
        return m;
    }
}

最佳答案

在您的代码中,问题出在这一行。

return  ((m) + (m-1))/2;


它应返回第n个数字和第(n-1)个数字的平均值,即n =(列表大小)/ 2。你可以试试看

public static double mediana(List<Double> liczby ){
Collections.sort(liczby);
int n = liczby.size()/2;
double m;
if (liczby.size() % 2 == 0)
m = (liczby.get(n) + liczby.get(n-1))/2;
else
m = liczby.get(n);
return m;
}

10-08 08:32