簡體   English   中英

如何讓數組方法為我提供正確的輸出?

[英]How do I get the array method to give me the correct output?

我正在嘗試創建一個期望int數組和兩個int S1int 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()

至於您當前的代碼,這里有一些提示:

  1. 為什么總是為copy分配三個元素? 數組的大小應該取決於S1S2
  2. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM