[英]Error making a sub-array
我有一个大小为5的数组和以下元素 -
int[] a = new int[] {0, 10, 20, 30, 40};
我想要做的是创建一个子数组,其中包含从[index]到[index + size]的元素
为了实现这个目的,我正在做的事情。 我这样做一个类构造函数 -
public CoolName(int index, int size, int[] array) {
int counter = 0;
this.a = array;
while(counter < size) {
if(index <= (size + index)) {
array[counter] = array[index];
counter++;
index++;
}
else
break;
}
}
但是,当我尝试使用我的main方法输出它时,这就是打印出来的 -
Subarray after modification:
s[0]: 20
s[1]: 300
s[2]: 20
s[3]: 30
s[4]: 40
问题 - 我只想要从索引到索引+大小的元素,如果我传递索引2和大小2,我只想要总共2个元素(这是大小)。
这是我的预期产量 -
Subarray after modification:
s[0]: 20
s[1]: 300
所以基本上,我不希望显示额外的元素。 我知道它打印所有元素导致我设置this.array = a
所以它得到了原始数组的大小。
但是,有人可以告诉我这个问题的可能解决方案吗? 谢谢你解答我的问题!
使用System.arraycopy()
。 像这样:
import java.util.Arrays;
/**
<P>{@code java CopyArraySubset}</P>
**/
public class CopyArraySubset {
public static final void main(String[] ignored) {
int[] origInts = new int[] {0, 10, 20, 30, 40};
int startIdx = 2;
int newArrayLen = origInts.length - startIdx;
int[] intsSubset = new int[newArrayLen];
System.arraycopy(origInts, startIdx, intsSubset, 0, newArrayLen);
System.out.println("origInts=" + Arrays.toString(origInts));
System.out.println("intsSubset=" + Arrays.toString(intsSubset));
}
}
输出:
[R:\jeffy\programming\sandbox\xbnjava]java CopyArraySubset
origInts=[0, 10, 20, 30, 40]
intsSubset=[20, 30, 40]
我认为你应该使用Arrays.copyOfRange()
来创建数组的副本:
public CoolName(int index, int size, int[] array) {
this.a = Arrays.copyOfRange(array, index, index+size);
}
public int[] getSubArray(int[] array, int index, int size) {
int[] subArray = new int[size];
int subArrayIndex = 0;
for (int i = index; i < index + size; i++) {
subArray[subArrayIndex] = array[i];
subArrayIndex++;
}
return subArray;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.