我刚刚创建了一个比我之前的数组大一个的新数组,我想将第一个数组中的值复制到新数组中。如何将新值添加到新数组的最后一个索引?
这是我尝试过的:
public void addTime(double newTime) {
if (numOfTimes == times.length)
increaseSize();
times[numOfTimes] = newTime;
}
答案 0 :(得分:1)
我建议尝试使用java.util.List
之类的对象而不是原始数组。然后你可以这样做:
times.add(newTime)
并为您处理大小调整。
答案 1 :(得分:1)
为什么不使用System.arraycopy函数。
increaseSIze()
{
double [] temp = new double[times.lebgth+1];
System.arrayCopy(times,0,temp,0,times.length);
times=temp;
}
之后你有时间数组增加了1个。
答案 2 :(得分:0)
要为您可以执行的最后一个索引设置新值
times[times.length - 1] = newTime;
答案 3 :(得分:0)
数组索引来自0..n-1
。
array[array.length - 1]
将解决数组末尾的值。
答案 4 :(得分:0)
数组的最后一项始终位于myArray.length - 1
。在您的情况下,times数组中的最后一个元素是times[times.length - 1]
。有关数组的更多信息,请查看http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html。
但更重要的是:如果您尝试更改阵列的容量,则很可能使用错误的数据结构来完成作业。如果您需要类似数组的索引来访问元素,请查看Oracle的Introduction to Collections
(尤其是ArrayList
类。)
答案 5 :(得分:0)
为什么你不想要这个要求的java.util.ArrayList?实际上,不需要管理它的大小。你只需这样做:
List<Double> list = new ArrayList<Double>();
list.add(newTime);
答案 6 :(得分: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 Collection Framework类,例如ArrayList。 ArrayList
的设计目标之一是管理大小管理,就像JVM本身管理内存管理一样。
我开发了一个在线可执行示例here。