编写一个名为 removeSomePoints 的方法。此方法接受一个点数组,并返回一个与原始数组相同的新点数组,只是它删除了所有 x 和 y 坐标相差小于 20 的点。换句话说,返回的数组可能比原始数组的大小更小。此方法应保持原始数组不变。澄清:如果以下任何点在原始数组中,它们将不在返回的数组中。
100 90(x 和 y 相差 10)
90 100(x 和 y 相差 10)
3 22(x 和 y 相差 19)
另一方面,以下任何点都将在返回的数组中:
100 80(x 和 y 相差 20)
80 100(x 和 y 相差 20)
2 25(x 和 y 相差 23)
我的代码:
public static Point[] removeSomePoints(Point[] arr)
{
int count = 0;
for (int i = 0; i < arr.length; i++) {
if (Math.abs(arr[i].getX() - arr[i].getY()) > 19) {
count++;
}
}
Point[] finalArr = new Point[count];
for (int i = 0; i < finalArr.length; i++) {
if (Math.abs(arr[i].getX() - arr[i].getY()) > 19) {
finalArr[i] = arr[i];
}
}
return finalArr;
}
似乎无法弄清楚出了什么问题。它正在返回一个数组,但它不会改变任何东西。