Java 将阵列等分为3部分
我有一个数组,我想把它平均分成3部分。我知道怎么做,但我也想处理数组中有2个元素的情况 在这种情况下,我希望Java 将阵列等分为3部分,java,arrays,split,Java,Arrays,Split,我有一个数组,我想把它平均分成3部分。我知道怎么做,但我也想处理数组中有2个元素的情况 在这种情况下,我希望center数组是零元素的空数组(center.length==0)(必须有零元素,而不仅仅是空数组) 以下是我所做的: int elements = data.length; int sizeLeft; int sizeCenter; int sizeRight; if (elements > 2) { if (elements % 3 == 0) {
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;
}
数据
是将被分成三部分的主数组:左
中
和右
我想问的是,是否有一种方法可以将两个if
巧妙地结合在一起
谢谢。您只需写下:
int elements = data.length;
int mod = elements % 3;
int div = elements / 3;
int sizeLeft = div + (mod > 0 ? 1 : 0);
int sizeCenter = div;
int sizeRight = div + (mod > 1 ? 1 : 0);
试试这个
int len= data.Length;
int pos = len / 3;
int remaining = len % 3;
int firstpos = pos + (remaining > 0 ? 1 : 0);
int centerpos=pos;
int lastpos = pos + (remaining / 2);
所以当您给出这个方法时,
System.arraycopy(数据,startCopy,array,0,size)代码>作为数字0的大小,它实际上将创建一个零元素数组?是的,正如javadoc所说:,int,java.lang.Object,int,int),如果您愿意,您还可以使用Arrays.copyOf(int[],int!):)我真的很傻,没有早点看到这个,非常感谢