Использование массивов для вывода средних значений чисел в массиве и наименьшего числа в массиве

Мне нужно написать программу, которая создает класс HomeworkGrades(), который хранит оценки домашних заданий по 8 главам в массиве doubles. Мне нужно создать конструктор, который принимает массив в качестве входных данных, копирует содержимое массива и копирует его в массив классов. Наконец, в моем классе main() мне нужно распечатать среднее значение оценок в массиве и наименьшее значение в массиве. Я думаю, что правильно создал свой класс HomeworkGrades(), я просто не могу понять, как вызвать правильные методы, чтобы значения выводились на экран.

Вот мой класс main() ...

package classwork_7_1;

public class ClassWork_7_1 {

    public static void main(String[] args) {
        double[] grades = {98.7, 77.9, 90, 83, 67, 33, 81, 90};
        double lowChap = grades[0];

        System.out.println(average(grades[]));
        System.out.println(lowChap(lowChap[]));
    }
}

Вот мой класс HomeworkGrades() ...

package classwork_7_1;

public class HomeworkGrades {
    private double[] grades = new double[8];

    public HomeworkGrades(double[] grades) {
        this.grades = grades;
    }

    public double average(double[] grades) {
        int chap = 8;
        double sum = 0;
        for (int i = 0; i < grades.length; i++)
            sum += i;
        double average = sum / chap;

        return average;
    }

    public double lowChap(double[] grades) {
        double minValue = grades[0];

        for (int i = 0; i < grades.length; i++) {
            if (grades[i] < minValue) {
                minValue = grades[i];

                return minValue;
            }
        }
    }
}

У вас есть класс HomeworkGrades, но вы никогда не создаете его экземпляр в main (вызывая new HomeworkGrades), это было бы хорошим началом.

Joakim Danielson 12.11.2018 20:03

@MegaBluejay, конечно ... все может помочь, я просто не могу использовать .sort

Matt L. 12.11.2018 20:03
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
61
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вот в этих строках:

double lowChap = grades[0];

System.out.println(average(grades[]));
System.out.println(lowChap(lowChap[]));

lowChap - это одиночный double, и вы пытаетесь передать lowChap[] в lowChap(), который принимает Array двойников и должен быть вызван для объекта HomeWorkGrades. Ясно, что это не сработает. Вместо этого вы должны создать object типа HomeWorkGrades и передать grades в конструктор, а затем вызвать методы этого объекта. В этом случае вы можете удалить аргументы в своих методах и просто использовать this.grades:

HomeWorkGrades hw = new HomeWorkGrades(grades);

System.out.println(hw.average());
System.out.println(hw.lowChap());

Итак, в ваших методах у вас будет:

public double average(){
    int chap = 8;
    double sum = 0;
    for(int i = 0; i<grades.length; i++)
        sum+=grades[i];
    double average = sum / chap;

    return average;   
}
public double lowChap(){    
    double minValue = grades[0];

    for(int i=0;i<grades.length;i++){
        if (grades[i] < minValue)
           minValue = grades[i];
    }
    return minValue;
}

Обратите внимание, что в average я заменил sum += i; на sum+= grades[i];, чтобы добавить оценку с индексом i к sum вместо только i.

Вывод:

77.575
33.0

Обратите внимание, что приведенный ниже код не обрабатывает случай пустого массива grades.

double min = Arrays.stream(grades).min().getAsDouble();
double average = Arrays.stream(grades).average().getAsDouble();

Другие вопросы по теме