[英]How do I get the array method to give me the correct output?
我正在嘗試創建一個期望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]);}
}
}
請幫助! :)
該方法返回一個新數組,其中包含從起始位置到結束位置的元素。
目前它不會返回任何東西(這是一種void
方法)。 但是,如果您希望盡可能Arrays.copyOfRange()
,可以使用Arrays.copyOfRange()
。
至於您當前的代碼,這里有一些提示:
copy
分配三個元素? 數組的大小應該取決於S1
和S2
。 arraycopy()
的參數完全錯誤。 閱讀Java文檔的相關部分,找出正確的值。 你會發現這效果更好:
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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.