Java 添加最新数组元素时丢失最后一个数组元素
除了当前添加的元素,我的数组中的所有元素都丢失了。我得到了正确的总和和长度,但我不能再引用旧元素了Java 添加最新数组元素时丢失最后一个数组元素,java,arrays,Java,Arrays,除了当前添加的元素,我的数组中的所有元素都丢失了。我得到了正确的总和和长度,但我不能再引用旧元素了 public class Lab7Model { int ordersTotal; double[] priceArray; double prices_d, pricetotal_d, sum, priceavg_d; public void statscompute() { ordersTotal = ordersTotal + 1; c.statsf
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;
}
}
公共类Lab7Model
{
int ordersTotal;
双数组;
双倍价格、总价、总价、平均价格;
公共无效StatCompute()
{
ordersTotal=ordersTotal+1;
c、 setTitle(“订单的统计数据(“+ordersTotal+”));
价格=Double.parseDouble(c.pricedisplay);
priceArray=新的双精度[ordersTotal];
priceArray[ordersTotal-1]=价格;
对于(int x=0;x
每次按行调用statcompute()
时,都要重新创建数组
priceArray = new double[ordersTotal];
您应该使用列表
,然后
priceArray.add(prices_d)
而不是
priceArray[ordersTotal-1] = prices_d;
如果您真的必须使用数组而不是列表,也可以使用System.arraycopy()
做一些技巧(我想这不是您的情况,使用list
是最好的方法)
这将创建一个全新的数组,当然所有元素都设置为0
您可以将元素从旧数组复制到新数组中,方法如下:
double[] newArray = new double[ordersTotal];
for(int k = 0; k < ordersTotal - 1; k++)
priceArray[k] = newArray[k];
priceArray = newArray;
double[]newArray=newdouble[ordersTotal];
for(int k=0;k
或者使用System.arraycopy
或者,您可以使用一个集合,通过进行以下更改来为您处理此问题:
- 导入java.util.List和java.util.ArrayList
- 更改
todouble[]价格数组
List priceList=new ArrayList()代码>
- 删除
priceArray=newdouble[ordersTotal]代码>
- 更改
priceArray[ordersTotal-1]=价格代码>至
价格表。添加(价格)代码>
- 将
更改为pricelarray.length
priceList.size()
- 将
更改为pricelarray[x]
priceList.get(x)
double[] newArray = new double[ordersTotal];
for(int k = 0; k < ordersTotal - 1; k++)
priceArray[k] = newArray[k];
priceArray = newArray;