为什么我的累加器不递增并且总是返回零?

jrcvhitl  于 2021-07-08  发布在  Java
关注(0)|答案(2)|浏览(424)

我刚刚开始学习java,所以我的问题对你们大多数人来说可能很有趣,我正在尝试编写一个程序来计算一系列课程的平均值,由于某些原因,我的累加器没有递增

public void setStudents() {

        accumulator=0;

    for(int x=0;x<course.length;x++)
    {
         accumulator =accumulator+ course[x].result;

    }
}
public double getAverage () {
   average=(double)(accumulator/course.length);
    return average;
}
public int getTotal() {
    return accumulator;
}
kyvafyod

kyvafyod1#

class Mine {
    int accumulator;
    double average;
    Course[] course = {Course.builder().result(10).build(), Course.builder().result(20).build(), Course.builder().result(30).build()};

    public static void main(String[] args) {
        Mine obj=new Mine();
        obj.setStudents();
        double avg = obj.getAverage();
        System.out.println(avg);
    }

    public void setStudents() {
        Course[] course = {Course.builder().result(10).build(), Course.builder().result(20).build(), Course.builder().result(30).build()};
        for (int x = 0; x < course.length; x++) {
            accumulator = accumulator + course[x].result;
        }
    }

    public double getAverage() {
        average = (double) (accumulator / course.length);
        return average;
    }

    public int getTotal() {
        return accumulator;
    }
}

@Builder
@Data
class Course {
    int result;
}

如果你看到上面的代码,我刚刚修改了你现有的代码。
您在获取和分配局部变量时犯了一些小错误。
就这样吧 link ,这将指导您 scope,global variable, local variables

uxhixvfz

uxhixvfz2#

我假设它被 Package 在一个类中,这个类有一个名为 accumulator . 在这种情况下,当类被构造时 setStudents 方法,以便正确设置累加器。如果你不打电话给 setStudents 方法,或调用 getAverage 方法 accumulator 字段将被设置为其默认值,即0。这可能就是为什么结果为0的原因。这可以通过调用 setStudents 在这个类的构造函数中,或者在调用 getAverage 方法。另外,在 getAverage 方法,则应该在执行算术之前将其强制转换为double,否则仍会调用整数除法,然后将其强制转换为double。所以这条线

average=(double)(accumulator/course.length);

应该是

average=(double)(accumulator)/course.length;

相关问题