我有很多矩形,并且试图生成一个不在它们中的任意点。我创建了这样做的方法,但现在看来,这是导致我的申请,冻结,因为它要经过大量的点产生一个有效的点之前:java:生成一个不在矩形内的随机点
public Point getLegalPoint() {
Random generator = new Random();
Point point;
boolean okPoint = true;
do {
point = new Point(generator.nextInt(975), generator.nextInt(650));
for (int i = 0; i < buildingViews.size(); i++) {
if (buildingViews.get(i).getBuilding().getRectangle()
.contains(point)) {
okPoint = false;
break;
}
}
} while (okPoint == false);
return point;
}
有什么我做错误,还是有更有效的方式来做到这一点,以便它不会冻结我的应用程序?
我假设你想要在一个矩形R1内生成一个点,这个矩形R1是在其他的rectagle R2之外的。如果是这样,你应该告诉我们R1 R2的相对大小,如果R2在R1内部 – leonbloy
想象一下,如果for循环的第一次迭代设置“okPoint = false”,则执行此代码。什么时候再次设置为“真”? – nos
矩形的大小是多少?我的意思是,如果它非常接近975x650,那么概率很低,您将需要大量迭代。 – rodrigoap