我有很多矩形,並且試圖生成一個不在它們中的任意點。我創建了這樣做的方法,但現在看來,這是導致我的申請,凍結,因爲它要經過大量的點產生一個有效的點之前: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