2014-01-20 22 views
1

比方說,我有一個數組:爪哇 - 返回從數組的數組有兩個給定指標

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

有兩個指標(假設25),我希望能夠從指標2返回數組從上面給出的變量values5。最終的輸出應該是這樣的:

newValues[] = {3, 4, 5, 6}; 

此外,該過程如何與多維數組一起使用?

我會用google搜索這個,但我不知道google是什麼,所以我來到了這裏。

+0

你會怎麼做? –

+0

http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/ArrayUtils.html#subarray(java.lang.Object [],int,int) –

+2

在結果數組中排除'Arrays.copyOfRange(原始,從,到)''到'索引,因此您必須使用+1進行更正。 – Pshemo

回答

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 
+0

wat abt多維數組? –

8

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

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

雖然這對單維數組工作正常,但這並不回答問題的多維部分。 –

+0

我同意。但是,每個多維數組可以轉換爲一維數組並轉換爲該函數。 – user987339

2

嘗試使用二維數組如下:

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; 
} 

對於一維數組,Arrays.copyOfRange()應該罰款和多個維度,你可以簡單地添加更多的PARAMS和for循環

+0

這完全是我在找的東西。我會標記這個權利,但我正在尋找更「內置」的東西。你知道對於多維數組是否有與'Arrays.copyOfRange()'等價的東西? –

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方法:

公共靜態無效arraycopy(對象SRC,詮釋srcPos ,Object dest,int destPos,int length)