我正在研究一种为整数数组执行各种任务的方法。这些方法包括将所有元素向右移动,交换第一个和最后一个元素,以及用0替换元素。我能够成功地为所有这些事物创建方法,但我想创建一个基本上“重置”的方法'数组到原始值,所以我可以从同一组数字中测试每个其他方法。
换句话说:
打印:原始数组为:1,2,3
使用我做的交换方法打印:交换了第一个和最后一个数字的数组是:3,2,1
array.reset()
使用我制作的添加方法进行打印:数组为6& 7添加到最后是:1,2,3,6,7
这是我第一次尝试“重置”方法的方法的开始。我有点迷失了如何设置它,因为我尝试的一切产生了一个错误,我似乎只是为了这样一个〜看似简单的方法。有任何想法吗?
public class Ex2 {
private int[] values;
public Ex2(int [] initialValues) {values = initialValues;}
public void reset(){
int[] values = values??;
}
答案 0 :(得分:2)
您需要复制源数组。请注意,此方法适用于基本数组,但对于非基元数组,则需要使用System.arrayCopy()
。
public class Ex2 {
private int[] values;
private int[] savedState;
public Ex2(int [] initialValues) {
values = initialValues;
savedState = initialValues.clone();
}
public void reset(){
values = savedState.clone();
}
}
答案 1 :(得分:0)
您可以在构造函数中复制initialValues。 代码看起来像这样:
public class Ex2 {
private int[] values;
private int[] originValues;
public Ex2(int [] initialValues) {
values = initialValues;
System.arraycopy(values, 0, originValues, 0, values.length);
}
public void reset(){
System.arraycopy(originValues, 0, values, 0, originValues.length);
}
}