我似乎无法获得随机生成点距离的单个MAX值。 因此,我不能创造必要的最长距离。
for(int i = 0; i < pts.length; i++) {
pts[i] = new Point2D(Math.random(), Math.random());
StdDraw.setPenColor(StdDraw.RED);
StdDraw.setPenRadius(0.008);
pts[i].draw();
for(int j = 0; j < i; j++) {
double distance[] = { pts[i].distanceTo(pts[j]) };
for(int k = 0; k < distance.length; k++ ) {
while(distance[k] > max) {
max = distance[k];
if(max > 0) {
System.out.println(max);
StdDraw.setPenColor(StdDraw.BLACK);
StdDraw.setPenRadius(0.002);
pts[i].drawTo(pts[j]);
答案 0 :(得分:1)
因此,在你最内层的for循环中,只需检查每个距离并存储max
。一旦完成循环,执行绘图。为此,您需要在全球某处存储点的索引(i和j)。所以像这样:
// declare these guys to keep track of where to draw
int maxI = 0;
int maxJ = 0;
for (int i = 0; i < pts.length; i++){
pts[i] = new Point2D(Math.random(), Math.random());
StdDraw.setPenColor(StdDraw.RED);
StdDraw.setPenRadius(0.008);
pts[i].draw();
for (int j = 0; j<i; j++){
double distance[] = {pts[i].distanceTo(pts[j])};
for (int k = 0; k <distance.length; k++ ){
if (distance[k] > max){
max = distance[k];
maxI = i;
maxJ = j;
}
}
}
}
if (max > 0){
System.out.println(max);
StdDraw.setPenColor(StdDraw.BLACK);
StdDraw.setPenRadius(0.002);
pts[maxI].drawTo(pts[maxJ]);
}