我正在尝试创建一个方法,该方法需要一个int
和两个int S1
和int S2
数组作为参数。整数表示参数数组中子数组的起始位置和结束位置。该方法返回一个新数组,其中包含从起始位置到结束位置的元素。
这就是我所拥有的,但它不断给我这个信息:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at testing.subArray(testing.java:14)
at testing.main(testing.java:9)
以下是代码:
public class testing{
public static void main(String args[])
{
int[] firstArray = {8,9,10,11,12,13};
subArray(firstArray, 2, 4);
}
public static void subArray(int[]originalArray, int S1, int S2)
{
int[] copy = new int[3];
System.arraycopy(originalArray, S1, copy, S2, 2);
for (int i = 0; i < copy.length; i++){
System.out.println(copy[i]);}
}
}
请帮忙! :)
答案 0 :(得分:2)
该方法返回一个新数组,其中包含从起始位置到结束位置的元素。
目前它没有返回任何内容(它是void
方法)。但是,如果您希望尽可能简化工作,则可以使用Arrays.copyOfRange()
。
关于您当前的代码,这里有一些提示:
copy
分配三个元素?数组的大小应取决于S1
和S2
。arraycopy()
的参数完全错误。阅读Java文档的相关部分,找出正确的值。答案 1 :(得分:0)
你会发现这样做效果更好:
public class testing {
public static final int DEFAULT_LENGTH = 3;
public static void main(String args[]) {
int[] firstArray = {8, 9, 10, 11, 12, 13};
int [] subArray = createSubArray(firstArray, 2, 4);
for (int i = 0; i < subArray.length; i++) {
System.out.println(subArray[i]);
}
}
public static int [] createSubArray(int[] originalArray, int startPosition1, int valuesToCopy) {
int subArrayLength = Math.min((originalArray.length-startPosition1), valuesToCopy);
int [] subArray = new int[subArrayLength];
System.arraycopy(originalArray, startPosition1, subArray, 0, subArrayLength);
return subArray;
}
}