Java 如何获得数组方法以提供正确的输出?

Java 如何获得数组方法以提供正确的输出?,java,arrays,methods,Java,Arrays,Methods,我试图创建一个方法,该方法期望一个int数组和两个ints1和ints2作为参数。整数表示参数数组中子数组的起始位置和结束位置。该方法返回一个新数组,其中包含从起始位置到结束位置的元素 这就是我所拥有的,但它一直给我这样的信息: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException at java.lang.System.arraycopy(Native Method) at testing.sub

我试图创建一个方法,该方法期望一个
int
数组和两个
ints1
ints2
作为参数。整数表示参数数组中子数组的起始位置和结束位置。该方法返回一个新数组,其中包含从起始位置到结束位置的元素

这就是我所拥有的,但它一直给我这样的信息:

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 main(字符串参数[])
{
int[]firstArray={8,9,10,11,12,13};
子阵列(第一阵列,2,4);
}
公共静态无效子阵列(int[]原始阵列,int S1,int S2)
{
int[]复制=新int[3];
系统阵列副本(原始阵列,S1,副本,S2,2);
for(int i=0;i
请帮忙!:)

该方法返回一个新数组,其中包含从起始位置到结束位置的元素

目前它没有返回任何内容(这是一个
void
方法)。然而,如果你想让你的工作尽可能简单,你可以利用

关于您当前的代码,以下是一些提示:

  • 为什么您总是为
    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;
        }
    
    }
    
    公共类测试{
    公共静态最终整数默认长度=3;
    公共静态void main(字符串参数[]){
    int[]firstArray={8,9,10,11,12,13};
    int[]subArray=createSubArray(firstArray,2,4);
    对于(int i=0;i
    eek,对不起。。。我是初学者。。只有大约一个学期的时间。我会努力的,谢谢我照你说的做了,但上面说找不到符号“数组”<代码>公共静态无效主数组(字符串args[]){int[]firstArray={8,9,10,11,12,13};子数组(firstArray,2,4);}公共静态无效子数组(int[]originalArray,int S,int E){int[]copy=Arrays.copyOfRange(originalArray,S,E);for(int i=0;i@pearbear:这看起来好多了。请注意,
    copyOfRange()
    不会复制结束元素(
    E
    )——您可能需要对此进行调整。