Java 如何从ArrayList计算平均值

Java 如何从ArrayList计算平均值,java,Java,我试图从购物车数组列表中计算平均值。平均值是指所有产品的总和除以其数量?,如果我错了,请纠正我,也许这就是我的逻辑不起作用的原因 我试着做一个循环,计算所有乘积的和,然后除以它的数量 public double getAverageValue(){ double averageValue = 0; for ( int i=0; i < cartLineList.size() ; i++) { double sum += cartLineList.get(i

我试图从购物车数组列表中计算平均值。平均值是指所有产品的总和除以其数量?,如果我错了,请纠正我,也许这就是我的逻辑不起作用的原因

我试着做一个循环,计算所有乘积的和,然后除以它的数量

public double getAverageValue(){
    double averageValue = 0;

    for ( int i=0; i < cartLineList.size() ; i++) {
        double sum += cartLineList.get(i).getProduct();
    }

    for (CartLine cart : cartLineList) {
        averageValue = (sum / cart.getQuantity());
    }
    return averageValue;
}

public class CartLine {

private Product product;
private int quantity;

public CartLine(Product product, int quantity) {
    this.product = product;
    this.quantity = quantity;
}

public double getSubtotal() {
    return quantity * product.getPrice();
}

public Product getProduct() {
    return product;
}

public void setProduct(Product product) {
    this.product = product;
}

public int getQuantity() {
    return quantity;
}

public void setQuantity(int quantity) {
    this.quantity = quantity;
}
}

试试这样的

public double getAverageValue(){
  double averageValue = 0;
  double sum = 0;

  if(cartLineList.size() > 0){
    for ( int i=0; i < cartLineList.size() ; i++) {
      // assuming the product class has a price
      sum += cartLineList.get(i).getProduct().getPrice();
    }
    averageValue = (sum / (double)cartLineList.size())
  }

  return averageValue;
}

看起来很好,你有什么问题?甚至没有编译。sum仅适用于第一个循环,请在此处查找正确的方法。您的代码似乎无法编译。您应该首先定义sum变量,并且只定义一次,因为现在每个循环都要定义sum变量,然后累加sum,最后将sum除以cart数组的大小。@Бааааааааааjavascript@alain.janinm=+是有效的,但更像=+也就是说,赋值和大部分NOP只是数字升级,当然不是想要什么如果CartlineList.size>0是redunant,以及将cartLineList的大小强制转换为两倍,因为sum已经是两倍。不,当您除以它averageValue=sum/doublecartLineList.size时,需要检查它是否大于0。另外,当你在一个double和一个非double值之间进行除法或乘法时,你应该总是将两者都转换为double,否则你会得到奇怪的结果。对不起,没有足够的注意,你检查零是对的,但是,使用isEmpty方法可能更好。我从来没有听说过用整数除以double的问题。你能分享一些关于它的话题吗?谢谢@HarisBouchlis!它可以编译,但当我运行JUnit测试时,它不起作用,但在调试之后,一切正常,因为我已更正了此函数的预期值。@БааааМаааааа检查此项