我必须从现有的两个新数组生成一个,一个将具有正值,一个负数,不包括0.如果这个逻辑是正确的,我只有一个问题,声明这两个数组的长度,新数组。我是编程的初学者。
public static void main(String[] args) {
int[] array = {12, 23, -22, 0, 43, 545, -4, -55, 43, 12, 0, -999, -87};
int[] array1 = new int [];
int[] array2 = new int [];
for(int i=0; i<array.length; i++) {
if(array[i]>0) {
if(array[i]==0)
continue;
int[] array1 = new int[];
array1[i]=array[i];
} else if(array[i]<0) {
if(array[i]==0)
continue;
array2[i]=array[i];
}
}
答案 0 :(得分:4)
如果您使用Java 8,则可以执行
int[] array = new int[]{12, 23, -22, 0, 43, 545, -4, -55, 43, 12, 0, -999, -87};
int[] positives = Arrays.stream(array).filter(x -> x > 0).toArray();
int[] negatives = Arrays.stream(array).filter(x -> x < 0).toArray();
答案 1 :(得分:1)
您需要更改算法以在两次传递中执行此操作,如下所示:
实现此目的时,此代码使用array1
和array2
的错误索引的节点:
array1[i] = array[i];
array2[i] = array[i];
每一方都需要两个单独的索引:
array1[positiveIndex++] = array[i];
array2[negativeIndex++] = array[i];
或者,如果您的练习允许,您可以使用可以在向其添加项目时增长的集合(例如ArrayList<Integer>
)。这种方法要简单得多,因为它只需要一次通过。