我是编程新手,正在尝试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...这是一个正数吗?)。然后根据这些计数创建新数组。
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];
}
}
关于java.lang.ArrayIndexOutOfBoundsException : 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41266155/