【发布时间】:2020-07-09 17:02:34
【问题描述】:
程序是:找到两个数组的交集(公共元素)。
输入:arr1 -> {10.45, 14.0, 18.35, 88.88, 54.10, 18.35}
arr2 -> {17.20, 13.30, 10.45, 18.35, 84.33, 13.30}
输出:10.45, 18.35
方法签名:double[] getIntersectionOfArray(double[] arr1, double[] arr2)
方法:删除两个数组的重复元素,比较两个数组并将共同值分配给第三个数组 问题:只要 m 调用第二个数组的方法,它就会给出索引出界数组。 有人能解释一下为什么会这样吗?
限制:不要使用收集方法
导入 java.util.Arrays;
public class Test1 {
int count = 0;
int resultcount = 0;
void findIntersectionOfArray(double[] array1, double[] array2) {
double[] tempArray = new double[array1.length ]; //12
double[] tempArray1 = new double[array2.length];
// Calling Method to find Unique Array
tempArray = uniqueArray1(array1);
tempArray1 = uniqueArray1(array2);
// Removing 0.0 Extra value & Assigning array1 Unique value in array result 1
double[] resultArray1 = new double[count];
for (int index = 0; index < resultArray1.length; index++) {
resultArray1[index] = tempArray[index];
}
// Removing 0.0 Extra value & Assigning array 2 Unique value in array result 2
double[] resultArray2 = new double[count];
for (int index = 0; index < resultArray2.length; index++) {
resultArray2[index] = tempArray[index];
}
//System.out.println("Unique Array 1 : " + Arrays.toString(resultArray1));
//System.out.println("Unique Array 2 : " + Arrays.toString(resultArray2));
// Calling Method to Get Size of an intersection array
int size = getSizeOfAnArray(array1, array2);
double[] intersectArray = new double[size];
// Finding Common Elements between between 2 Arrays
boolean flag = true;
for (int outerindex = 0; outerindex < resultArray1.length; outerindex++) {
flag = true;
for (int innerindex = 0; innerindex < resultArray2.length; innerindex++) {
if (resultArray1[outerindex] == resultArray2[innerindex]) {
flag = false;
}
}
if (flag == false) {
intersectArray[outerindex] = resultArray1[outerindex];
count++;
}
} // O/p : [10.45, 0.0, 18.35, 0.0, 0.0, 0.0]
//System.out.println("Intersection array " + Arrays.toString(intersectArray));
// Printing Final Array Value getting 0.0 as well
for (int index = 0; index < intersectArray.length; index++) {
System.out.print(intersectArray[index] + " ,");
}
}
// Get Size of an intersectArray
int getSizeOfAnArray(double[] array1, double[] array2) {
int size = 0;
if (array1.length < array2.length)
size = array1.length;
else
size = array2.length;
return size;
}
// Method Unique Array will give Array1 Unique element
double[] uniqueArray1(double[] givenArray) {
double[] tempArray = new double[givenArray.length]; // 6
boolean isNumberPresent = true;
for (int outerindex = 0; outerindex < givenArray.length; outerindex++) {
isNumberPresent = true;
for (int innerindex = 0; innerindex < givenArray.length; innerindex++) {
if ((givenArray[outerindex] == tempArray[innerindex])) {
isNumberPresent = false;
}
}
if (isNumberPresent) {
tempArray[count] = givenArray[outerindex];
count++;
}
}
return tempArray; // [10.45, 14.0, 18.35, 88.88, 54.1,0.0]
}
public static void main(String[] args) {
Test1 test = new Test1();
double[] array1 = { 10.45, 14.0, 18.35, 88.88, 54.10, 18.35 };
double[] array2 = { 17.20, 13.30, 10.45, 18.35, 84.33, 13.30 };
test.findIntersectionOfArray(array1, array2);
}
}
【问题讨论】:
-
哪一行是异常?
-
上传的更新代码@QBrute @Harpistry 在第 81 行出现错误
tempArray[count] = givenArray[outerindex];
标签: java arrays for-loop intersection