Почему мой массив не усредняет все числа?

1

я должен создать массив и вызов метода для среднего. но по какой-то причине это не среднее число всех чисел, а только возвращающее последнее число. Я попросил моего инструктора о помощи, и она сказала, что математика правильная, и она должна работать. Но никакой другой помощи от нее. Что я сделал не так?

public static void main(String[] args) {
    double[] myArray = new double[2];

    initialize(myArray);
    double avg = getAverage(myArray);
    System.out.println(avg);
    output(avg);
}

public static void initialize(double[] myArray) {
    //myArray = new double[1000];
    for(int i = 0; i < myArray.length; i++) {
        myArray[i] = (int) ((Math.random()*500)*1);
        System.out.println(myArray[i]);
    }
}

/**
 *
 * @param myArray
 * @return
 */
public static double getAverage(double[] myArray) {
    int sum = 0;
    for (int i = 0; i < myArray.length; i++) {
        sum += myArray[i];
    }
    return sum / myArray.length;
}

public static void output(double avg) {
    System.out.println("The average is " + avg);
}
Теги:
arrays

2 ответа

3
Лучший ответ

Ключ находится в этой строке:

sum / myArray.length

... так как и sum и myArray.length являются целыми числами, Java выполняет целочисленное деление, а не деление с плавающей запятой, что по сути означает, что он уменьшает десятичный компонент результата.

Выделение одного из значений в double сначала приведет к возникновению деления с плавающей запятой.

Вы также сохраняете сумму как int, которая может снова ввести источник ошибки, поскольку массив содержит парные. В этом случае вы в порядке, потому что вы бросаете все, что вы помещаете в массив, сначала на int, и возникает вопрос о том, почему вы используете двойной массив в первую очередь?

В стороне это немного странно:

((Math.random()*500)*1);

Нет необходимости умножать результат на 1 здесь - это ничего не сделает.

  • 0
    Мой инструктор попросил двойной массив, вот причина. Также она - та, кто сказал нам использовать математический случайный умноженный на единицу. Я тоже не шучу. Я теряю все большую уверенность в своих способностях. Я думаю, именно поэтому она не могла мне помочь. Проблема, с которой я столкнулся, заключается в том, что он возвращает только последний номер это должно быть усреднение всех. В соответствии с ее инструкциями она хочет, чтобы мы использовали математический метод, а затем усредняли их в методе. Есть ли способ сделать это с двойным?
0

В чем проблема? Ответы идут правильно. Пожалуйста, проверьте еще раз. Интересным фактом является то, что третье число всегда такое же, как среднее из всех трех. Но среднее вычисление является правильным. Возможно, Math.random() генерирует случайные числа внутри. Третье - среднее значение двух других. Попробуйте четыре или пять чисел вместо трех цифр и проверьте свои ответы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню