比方說,我有一個數組:爪哇 - 返回從數組的數組有兩個給定指標
int[] values = {1, 2, 3, 4, 5, 6, 7 , 8, 9, 0};
有兩個指標(假設2
和5
),我希望能夠從指標2
返回數組從上面給出的變量values
到5
。最終的輸出應該是這樣的:
newValues[] = {3, 4, 5, 6};
此外,該過程如何與多維數組一起使用?
我會用google搜索這個,但我不知道google是什麼,所以我來到了這裏。
比方說,我有一個數組:爪哇 - 返回從數組的數組有兩個給定指標
int[] values = {1, 2, 3, 4, 5, 6, 7 , 8, 9, 0};
有兩個指標(假設2
和5
),我希望能夠從指標2
返回數組從上面給出的變量values
到5
。最終的輸出應該是這樣的:
newValues[] = {3, 4, 5, 6};
此外,該過程如何與多維數組一起使用?
我會用google搜索這個,但我不知道google是什麼,所以我來到了這裏。
請嘗試以下
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
wat abt多維數組? –
使用java.util Arrays
類。使用copyOfRange(int[] original, int from, int to)
方法:
newValues[] = Arrays.copyOfRange(values, 2, 6);
雖然這對單維數組工作正常,但這並不回答問題的多維部分。 –
我同意。但是,每個多維數組可以轉換爲一維數組並轉換爲該函數。 – user987339
嘗試使用二維數組如下:
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
循環
這完全是我在找的東西。我會標記這個權利,但我正在尋找更「內置」的東西。你知道對於多維數組是否有與'Arrays.copyOfRange()'等價的東西? –
您可以使用以下方法:
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)
你會怎麼做? –
http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/ArrayUtils.html#subarray(java.lang.Object [],int,int) –
在結果數組中排除'Arrays.copyOfRange(原始,從,到)''到'索引,因此您必須使用+1進行更正。 – Pshemo