我希望在一组点数组中找到唯一的点(即删除所有的重复项并查看剩下的部分)。
下面是我尝试过的代码:
int numCount = 0;
for (int x = 0; x < ALLARRAYS.length; x++) {
for (final Point test : ALLARRAYS[x]) {
NUMBER: for (final Point[] numbers : ALLARRAYS) {
if (numbers == ALLARRAYS[x]) {
continue;
}
for (int i = 0; i < numbers.length; i++) {
if (test.equals(numbers[i])) {
break NUMBER;
} else {
if (i == numbers.length - 1) {
numCount++;
}
}
}
}
if (numCount == 10) {
System.out.println(x + "\tPoint: " + test.x + ", " + test.y + " is unique.");
}
numCount = 0;
}
System.out.println();
}基本上,我有11个要检查的数组,因此numCount检查待确认的10个数组。我的方法是遍历每个数组,然后遍历数组中的所有点,然后循环遍历其他数组中的每个点。如果它看到一个重复,它会跳过整个数字。
我的问题:我得到了错误的读数。我不知道是怎么回事,但是这个程序发出了其他数组中已经存在的点。
我的目标:每个数组作为一个整体工作。如果一个元素不满足,则跳过整个数组。我的最终结果应该是11个大小较小的数组,它们都是唯一的,这样一个方法就可以检查每个集合的元素并确定它们都是唯一的。
注意:数组现在都是独一无二的,它们非常庞大。我正在寻找一种方法来截断它通过创建这个迷你程序,以消除重复。
我的问题:能请人帮帮我吗?
发布于 2012-05-04 23:44:54
您的代码似乎检查了有关Point的所有数组,包括您要查找的Point出现的数组。因此,您的代码将始终找到它正在寻找的Point,最终将没有结果。
你可能需要这样做:
NUMBER: for (final Point[] numbers : ALLARRAYS) {
if (numbers == array) {
continue; // skip the array that contains 'test'
}
...
}这样,您将跳过包含test元素的数组。
https://stackoverflow.com/questions/10457399
复制相似问题