Глядя на ваш код, у меня возникли проблемы с его выполнением, и похоже, что вы ошиблись в математике, вычисляя некоторые вещи
int num1=(values.length-1)/2;
int num2 = values.length/2;
middleArray = ( values[num1] + values[num2])/ 2;
Вы добавили длину массива к себе, а затем поделили на 2По сути отменяет добавление длины массива дважды.Кроме того, вы никогда не вызывали свою функцию внутри основного цикла, и у вас нет способа закрыть ваш ввод.
Функциональная версия вашего кода для получения медианы набора несортированных чисел будетэто (я избавился от сканера, потому что такой пользовательский ввод усложняется, я не думаю, что вы еще на этом уровне):
public static double takeMiddleOfArr(int values[]) {
double output = 0; //Initialize output
if(values.length % 2 != 0) { //See if the array is even or odd
output = values[(int)Math.floor(values.length/2)]; //If odd just output middle element
} else {
double mid = values.length/2.0; //Finds middle element of array
output = (values[(int)(mid-1)]+values[(int)(mid)])/2; //If even take avg of middle elements
}
return output;
}
public static void main(String[] args) {
int[] array = {1,2,3,4,20,6,3,2,1}; //Input array
System.out.println(takeMiddleOfArr(array)); //Prints outout
}