0

我刚刚创建了一个比我以前的数组大一个的新数组,我想将我的第一个数组中的值复制到我的新数组中。如何将新值添加到新数组的最后一个索引?

这是我尝试过的:

public void addTime(double newTime) {
    if (numOfTimes == times.length)
        increaseSize();
    times[numOfTimes] = newTime;
}
4

7 回答 7

1

为什么不使用 System.arraycopy 函数。

increaseSIze()
{
   double [] temp = new double[times.lebgth+1];
   System.arrayCopy(times,0,temp,0,times.length);
   times=temp;
}

之后,您将拥有大小增加 1 个的 times 数组。

于 2012-10-16T03:13:28.030 回答
1

我建议尝试使用对象java.util.List而不是原始数组。然后你可以这样做: times.add(newTime)它会为你处理尺寸。

于 2012-10-16T02:32:07.903 回答
0

如果使用数组是一个约束,请考虑Arrays.copyOf :

import java.util.Arrays;
...
private void increaseSize() {
   // Allocate new array with an extra trailing element with value 0.0d
   this.times = Arrays.copyOf( times, times.length + 1 );
}
...

请注意,如果您经常以不可预知的方式进行这种类型的数组管理,您可能需要考虑Java 集合框架类之一,例如ArrayList。的设计目标之一ArrayList是管理大小管理,就像 JVM 本身管理内存管理一样。

我在这里开发了一个在线可执行示例。

于 2012-10-16T02:47:45.333 回答
0

要将新值设置为最后一个索引,您可以这样做

times[times.length - 1] = newTime;
于 2012-10-16T02:27:05.997 回答
0

数组索引从0..n-1.

array[array.length - 1]将处理数组末尾的值。

于 2012-10-16T02:28:00.860 回答
0

你为什么不想要一个 java.util.ArrayList 来满足这个要求?实际上,不需要管理它的大小。你只需这样做:

 List<Double> list = new ArrayList<Double>();
 list.add(newTime);
于 2012-10-16T02:39:22.980 回答
0

数组的最后一项总是在myArray.length - 1。在您的情况下,时间数组中的最后一个元素是times[times.length - 1]. 有关数组的更多信息,请查看http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

但更重要的是:如果您尝试更改阵列的容量,您很可能使用了错误的数据结构来完成这项工作。看看 Oracle 的Introduction to Collections(特别是ArrayList如果你需要一个类似数组的索引来访问元素的类)。

于 2012-10-16T02:35:37.073 回答