使用数组打印出数组中数字的平均值和数组中最低的数字

时间:2018-11-12 18:59:24

标签: java arrays

我需要编写一个程序来创建一个HomeworkGrades()类,该类将8章的作业成绩存储到doubles的数组中。我需要创建一个构造函数,将数组作为输入并将其内容复制并复制到classes数组中。最后,在我的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;
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

以下几行:

double lowChap = grades[0];

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

lowChap是一个单独的double,您正在尝试将lowChap[]传递到lowChap()中,该{接受一个Array的双精度数,需要调用在HomeWorkGrades对象上。显然这是行不通的。相反,您必须创建类型为object的{​​{1}}并将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

答案 1 :(得分:-1)

请注意,以下代码无法处理空grades数组的情况。

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