Java 爪哇中部。当我有一个带有对数的数组时,我得到的中值是不正确的 公共静态双calcMedian(int[]数组){ int n=数组长度; int-middle=n/2; 双中位数=0; 对于(int i=0;i

Java 爪哇中部。当我有一个带有对数的数组时,我得到的中值是不正确的 公共静态双calcMedian(int[]数组){ int n=数组长度; int-middle=n/2; 双中位数=0; 对于(int i=0;i,java,median,Java,Median,当我有一个奇数的元素时,我得不到正确的中位数。例如,如果我的数组是[1 3 6 7 10 12],则中值应该是6.5。我得到的是6。我不明白为什么。提前感谢,因为您将int除以int,结果也是int类型,并且结果的小数部分(.5)被截断 要获得双精度结果,请在除法运算之前将除数或除数转换为双精度,如下所示: public static double calcMedian(int[] array) { int n = array.length; int middle = n /

当我有一个奇数的元素时,我得不到正确的中位数。例如,如果我的数组是[1 3 6 7 10 12],则中值应该是6.5。我得到的是6。我不明白为什么。提前感谢

,因为您将
int
除以
int
,结果也是
int
类型,并且结果的小数部分(
.5
)被截断

要获得双精度结果,请在除法运算之前将除数或除数转换为双精度,如下所示:

 public static double calcMedian(int[] array) {
    int n = array.length;
    int middle = n / 2;
    double median=0;
    for (int i = 0; i < n; i++) {
        if ((n % 2) == 1) {
            median = array[middle];
        } else if((n % 2) == 0){
            median = (array[middle-1] + array[middle]) / 2;
        }
    }
    return median;
}


由于将
int
除以
int
,因此结果也是
int
类型,并且结果的小数部分(
.5
)被截断

要获得双精度结果,请在除法运算之前将除数或除数转换为双精度,如下所示:

 public static double calcMedian(int[] array) {
    int n = array.length;
    int middle = n / 2;
    double median=0;
    for (int i = 0; i < n; i++) {
        if ((n % 2) == 1) {
            median = array[middle];
        } else if((n % 2) == 0){
            median = (array[middle-1] + array[middle]) / 2;
        }
    }
    return median;
}


您应该将其更改为(复制并粘贴就绪,也经过测试,并给出6.5)

公共静态双calcMedian(int[]数组){
int n=数组长度;
int-middle=n/2;
双中位数=0;
对于(int i=0;i
您应该将其更改为此(复制并粘贴就绪,也经过测试并给出6.5)

公共静态双calcMedian(int[]数组){
int n=数组长度;
int-middle=n/2;
双中位数=0;
对于(int i=0;i
median = ((double) (array[middle-1] + array[middle])) / 2;
public static double calcMedian(int[] array) {
   int n = array.length;
   int middle = n / 2;
   double median=0;
   for (int i = 0; i < n; i++) {
       if ((n % 2) == 1) {
           median = array[middle];
       } else if((n % 2) == 0){
           median = ((double)(array[middle-1] + array[middle])) / 2;
       }
   }
   return median;
}