Java - 从具有两个给定索引的数组返回一个数组

时间:2014-01-20 04:19:11

标签: java arrays indexing

假设我有一个数组:

int[] values = {1, 2, 3, 4, 5, 6, 7 , 8, 9, 0};

有两个索引(假设25),我希望能够从变量{{1}将索引从2返回到5如上所述。最终输出应为:

values

此外,该程序如何与多维数组一起使用?

我会用Google搜索,但我不确定谷歌是什么,所以我来到这里。

4 个答案:

答案 0 :(得分:8)

使用java.util Arrays课程。使用copyOfRange(int[] original, int from, int to)方法:

newValues[] = Arrays.copyOfRange(values, 2, 6);

答案 1 :(得分:2)

尝试以下

public static void main(String[] args)
{
    int[] values = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };

    int start = 2, end = 5; // Index
    int[] newValues = new int[end - start + 1]; // Create new array

    for (int i = start; i <= end; i++) {
        newValues[i - start] = values[i]; // Assign values
    }

    // Print newValues
    for (int v : newValues) {
        System.out.print(v + " ");
    }
}

<强>输出:

3 4 5 6

答案 2 :(得分:2)

请尝试以下2D阵列:

public int[][] getRange(int[][] src, int x, int y, int x2, int y2) {
    int[][] ret = new int[x2-x+1][y2-y+1];
    for(int i = 0; i <= x2-x; i++)
        for(int j = 0; j <= y2-y; j++)
            ret[i][j] = src[x+i][y+j];
    return ret;
}

对于1D数组,Arrays.copyOfRange()应该没问题,对于更多维度,您只需添加更多参数和for循环

答案 3 :(得分:1)

您可以使用以下内容:

int[] values = {1, 2, 3, 4, 5, 6, 7 , 8, 9, 0}; int newValues[] = new int[4]; System.arraycopy(values,1,newValues,0,4)

这是完整的代码:

public class CopyRange {    
  public static void main (String...args){
     int[] values = {1, 2, 3, 4, 5, 6, 7 , 8, 9, 0};
     int newValues[] = new int[4];

     System.arraycopy(values,1,newValues,0,4);

     for (int i =0;i <newValues.length;i++)
        System.out.print(newValues[i] + " ");
     }
}

System类有一个arraycopy方法,可以用来有效地将数据从一个数组复制到另一个数组中:

public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)