0
我有一個數組,我想將它分成幾部分,分爲3部分。我知道如何去做,但我也想處理在我的數組中有2個元素的情況。等分3個部分的數組
在這種情況下,我希望center
數組爲零元素的空數組(center.length == 0
)(必須有零個元素,而不僅僅是一個空數組)。
這裏是我做過什麼:
int elements = data.length;
int sizeLeft;
int sizeCenter;
int sizeRight;
if (elements > 2) {
if (elements % 3 == 0) {
sizeLeft = elements/3;
sizeCenter = elements/3;
sizeRight = elements/3;
} else if (elements % 3 == 1) {
sizeLeft = (elements/3) + 1;
sizeCenter = elements/3;
sizeRight = elements/3;
} else { //if (elements % 3 == 2)
sizeLeft = (elements/3) + 1;
sizeCenter = elements/3;
sizeRight = (elements/3) + 1;
}
int[] left = makeArray(data, 0, sizeLeft);
int[] center = makeArray(data, sizeLeft, sizeCenter);
int[] right = makeArray(data, sizeLeft + sizeCenter, sizeRight);
} else if (elements == 2) {
int[] center = new int[]{};
int[] left = makeArray(data, 0, 1);
int[] right = makeArray(data, 1, 1);
}
的makeArray
方法:
public static int[] makeArray(int[] data, int startCopy, int size) {
int[] array = new int[size];
System.arraycopy(data, startCopy, array, 0, size);
return array;
}
data
是要在3個部分要拆分的主陣列:left
center
和right
。
我想問的是,如果有一種方法可以將兩個ifs
合併爲一個if
,並且很好,優雅。
謝謝。
所以,當你把這個方法'System.arraycopy(數據,startCopy,陣列,0,大小);'作爲大小數字0它實際上會創建一個零元素的數組? –
是的,正如javadoc似乎所說:http://docs.oracle.com/javase/6/docs/api/java/lang/System.html#arraycopy(java.lang.Object,int,java.lang。 Object,int,int) –
如果您願意,也可以使用Arrays.copyOf(int [],int)! :) –