Java 为什么不能打印阵列的正确中值?
因为数组的长度是偶数,我们必须加上12+8=20,然后除以2。20 / 2 = 10. 但为什么它要在控制台中打印30?即使我排除了array.sorta;,它仍然打印30 应该印10张。我做错了什么Java 为什么不能打印阵列的正确中值?,java,algorithm,debugging,Java,Algorithm,Debugging,因为数组的长度是偶数,我们必须加上12+8=20,然后除以2。20 / 2 = 10. 但为什么它要在控制台中打印30?即使我排除了array.sorta;,它仍然打印30 应该印10张。我做错了什么 public static void solution(int[] a) { Arrays.sort(a); int median = 0; if(a.length % 2 != 0) { median = a[(a.length - 1) / 2];
public static void solution(int[] a) {
Arrays.sort(a);
int median = 0;
if(a.length % 2 != 0) {
median = a[(a.length - 1) / 2];
} else {
median = (a[(a.length / 2)] + a[(a.length - 1 / 2) - 1]) / 2;
}
System.out.println(median);
}
public static void main(String args[]) {
int[] a = {5,9,8,12,19,48};
solution(a);
}
它应该是中位数=a[a.length/2-1]+a[a.length/2]/2 为什么a.length为1/2?为什么a.length-1/2-1?a.length-1/2将是a.length-0,因为运算符precedence@CarlosHeuberger我想这就是我一直在努力正确地添加它们的原因。我希望a.length/2-1