我正在编写一个程序,它有一个名为data的双数组。
到目前为止我的代码如下。
public class DataSet {
private double[] data;
private int dataSize;
public DataSet(){
dataSize = 0;
data = new double [10];
}
public void add(double x){
if(dataSize>= data.length){
double[] newData = new double[data.length*2];
System.arraycopy(data, 0, newData, 0, data.length);
newData=data;
newData[dataSize]=x;
dataSize++;
}
else{
data[dataSize] = x;
dataSize++;
}
}
}
正如您所看到的,我正在使用add方法向数组中添加新值。 然而,我不确定的是,当我做
时newData=data;
我可以将此更改转到下一行吗?
data[DataSize] = x;
我之所以要问的是,通过设置两个数组是否彼此相等,每当我调用数据时,我实际上是在调用newData。
答案 0 :(得分:5)
您需要重新分配data
。 JVM中还有一些工具可以帮助您。
public void add(double x) {
if (dataSize >= data.length)
data = Arrays.copyOf(data, data.length * 2);
data[dataSize++] = x;
}
答案 1 :(得分:2)
通过分配newData
newData=data;
中)
替换
newData=data;
newData[dataSize]=x;
通过
data = newData;
data[dataSize]=x;