Как решить для среднего значения в массиве без max и min?

#java #arrays

#java #массивы

Вопрос:

 public class FunWithArrays {
    public static void main(String[] args) {
        int[] myFunArray = {7, 10, 3, 0, 615, -1000};
        int i;
 //minimum 
    int min;
    min = myFunArray[0];
    for (i=0; i < myFunArray. length; i  ) {
    if (myFunArray[i] < min) {
        min = myFunArray[i];
    } 
 }
 //maximum 
 int max;
 max= myFunArray[0];
 for (i=1; i < myFunArray. length; i  ) {
    if (myFunArray[i] > max) {
        max = myFunArray[i];
        }
    }
 System.out.println("minimum = "   min   " maximum = "   max);
        //mean without outliers
        double noOutliersMean = 0;
        for (i=0; i < myFunArray.length; i  ){
            noOutliersMean = ((sum - (max   min)) /myFunArray.length );
            if ( myFunArray.length < 3){
                System.out.println("not enough numbers");
            }
        }
        System.out.println("Mean without Outliers: "  noOutliersMean);

        //Array reversed
        int[] reversed = myFunArray;
        for(int i1 = reversed.length - 1; i1 >= 0 ; i1--) {
            System.out.println( "Reversed "   reversed[i1]);
        }
    }
}
  

Для среднего значения без выбросов (max и min) ответ должен быть 5, моя строка кода дает мне 1.333. Что я делаю не так?

2-й вопрос, касающийся перевернутого массива, при распечатке он дает мне правильный ответ, но каждое число в отдельной строке. Как мне получить его в 1 строке в формате ; reversed: [-1000,615,0,3,10,7]

Комментарии:

1. ваш код показывает, что max и min включены.. каковы его значения.. и как вы вычисляете сумму

2. mean = sum/total зачем вам нужно min и max ?

3. Вы пытаетесь найти медиану?

4. Где sum вычисляется?

5. Вам также необходимо удалить выбросы из подсчета: /(myFunArray.length-2) .

Ответ №1:

ответ на ваш второй вопрос — не печатать с помощью

 println
  

просто используйте print

Код должен быть:

 System.our.print("Reversed: [")
for(int i1 = reversed.length - 1; i1 >= 0 ; i1--) {
    System.out.print(reversed[i1]);
    if(i1>0){
       System.our.print(",");
    }
}
System.out.print("]");
  

Чтобы ответить на ваш первый вопрос, вам необходимо предоставить следующее:

Как вы вычисляете sum, max и min. Даже если вы упомянули без max и min.. вы все еще используете его в своем коде

Комментарии:

1. вам нужно проверить следующий элемент, если он существует, тогда следует добавить запятую

Ответ №2:

Подумайте о логике кода, когда вы манипулировали массивом… вы увидите, что среднее значение без min или max такое же, как: среднее значение, исключая элементы с индексом 0 и длиной индекса-1, если массив был отсортирован, так что это то, что вам нужно сделать

  1. отсортировать массив
  2. цикл, исключающий 1-й и последний
  3. вычислить среднее

Пример:

 int[] myFunArray = { 7, 10, 3, 0, 615, -1000 };
// unsorted { 7, 10, 3, 0, 615, -1000 };
// sorted { -1000, 0, 3, 7, 10, 615 };

Arrays.sort(myFunArray);
System.out.println(Arrays.toString(myFunArray));
int acumm = 0;
double mean = 0.0;
for (int i = 1; i < myFunArray.length - 1; i  ) {
    acumm  = myFunArray[i];
}
mean = acumm / (myFunArray.length - 2);
System.out.println(mean);