我是编程和尝试Java的新手,我创建了这个数组并给了我这个错误,任务是计算所有正面和负面的否并将它放在新的数组中我称为pArr和nArr,然后计算重复和写下它们以及它们重复多少次,有人可以帮助我吗?
public static void main(String[] args) {
int[] array = {12, 23, -22, 0, 43, 545, -4, -55, 43, 12, 0, -999, -87};
int brPoz=0, brNeg=0;
for(int a=0; a<array.length; a++){
if(array[a]>0)
brPoz++;
else if (array[a]<0)
brNeg++;
}
int[] pArr = new int[brPoz];
int[] nArr = new int[brNeg];
for (int i = 0; i < array.length; i++) {
if (array[i] > 0) {
pArr[i] = array[i];
}
}
for (int i = 0; i < array.length; i++) {
if (array[i] < 0) {
nArr[i] = array[i];
}
}
Arrays.sort(array);
Arrays.sort(pArr);
Arrays.sort(nArr);
System.out.println(java.util.Arrays.toString(array));
System.out.println(java.util.Arrays.toString(pArr));
System.out.println(java.util.Arrays.toString(nArr));
for (int i = 0; i < array.length; i++) {
for (int j = i + 1; j < array.length; j++) {
if ((array[j])==array[i]) {
System.out.println("Duplikati su: "+array[j]);
}
}
}
答案 0 :(得分:1)
你做的是,你首先计算所有正数和负数(顺便说一句:你忽略0 ......是正数吗?)。然后根据这些计数创建新数组。
brPoz和brNeg将小于原始数组的元素数。因此,您需要确保仅在结果数组中使用现有索引。
这可以通过
来实现 int pArrIndex = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] > 0) {
pArr[pArrIndex++] = array[i];
}
}
int nArrIndex = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] < 0) {
nArr[nArrIndex++] = array[i];
}
}