例如,我这里有一个点列表
列表 = <1,1>、<99,99>、<199,1>、<210,99>
我希望 <1,1> 与 <99,99> 和 <199,1> 进行比较,但不与 <210,99> 进行比较 但其他一切都可以与 <210,99> 进行比较
基本上第一个和最后一个元素无法比较,因为这意味着我的多边形是闭合的。
for(int i = 0; i < this.points.size()-1; i++) {
Point firstPoint = this.points.get(i);
for(int j = i+1; j < this.points.size(); j++) {
Point secondPoint = this.points.get(j);
Line2D line1 = new Line2D.Double(firstPoint.getX(), firstPoint.getY(), secondPoint.getX(), secondPoint.getY());
Line2D line2 = new Line2D.Double(((Line) aLine).getStart().getX(),((Line) aLine).getStart().getY(),((Line) aLine).getEnd().getX(),((Line) aLine).getEnd().getY());
boolean result = line2.intersectsLine(line1);
if(!result) {
}
最佳答案
您可以按如下方式实现所需的输出:
boolean isFirstElement = true;
for (int i = 0; i < pList.size() - 1; i++) {
Point pointOne = pList.get(i);
for (int j = i + 1; j < pList.size(); j++) {
Point pointTwo = pList.get(j);
if (j + 1 == pList.size() && isFirstElement) {
continue;
} else {
// your comparison logic goes here...
}
}
isFirstElement = false;
}
关于java - 如何修改我的 for 循环,使其不比较第一个和最后一个,而是将其他所有内容与最后一个进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49891945/