我遇到了丢失所有元素的问题,除了当前添加的元素,在我的数组中。我得到了正确的金额和长度,但我不能再引用旧元素了。
public class Lab7Model
{
int ordersTotal;
double[] priceArray;
double prices_d, pricetotal_d, sum, priceavg_d;
public void statscompute()
{
ordersTotal = ordersTotal + 1;
c.statsframe.setTitle("Statistics for ("+ordersTotal+") orders.");
prices_d = Double.parseDouble(c.pricedisplay);
priceArray = new double[ordersTotal];
priceArray[ordersTotal-1] = prices_d;
for (int x = 0; x < priceArray.length; x++)
{
sum = sum + priceArray[x];
}
priceavg_d = sum/priceArray.length;
}
}
答案 0 :(得分:0)
每次按行<{1}}
调用时,都会重新创建数组statscompute()
您应该使用priceArray = new double[ordersTotal];
,然后执行
List<Double>
而不是
priceArray.add(prices_d)
或者使用priceArray[ordersTotal-1] = prices_d;
做一些技巧如果你真的必须使用数组而不是列表(我想,这不是你的情况,使用System.arraycopy()
是最好的方法)
答案 1 :(得分:0)
priceArray = new double[ordersTotal];
这会创建一个全新数组,当然所有元素都设置为0.
您可以将旧数组中的元素复制到新数组中,如下所示:
double[] newArray = new double[ordersTotal];
for(int k = 0; k < ordersTotal - 1; k++)
priceArray[k] = newArray[k];
priceArray = newArray;
或使用System.arraycopy。
或者您可以通过进行以下更改来使用可以为您处理此问题的集合:
double[] priceArray;
更改为List<Double> priceList = new ArrayList<>();
priceArray = new double[ordersTotal];
priceArray[ordersTotal-1] = prices_d;
更改为priceList.add(prices_d);
priceArray.length
更改为priceList.size()
priceArray[x]
更改为priceList.get(x)