如何交换两点的坐标?



我定义了两个点,p1和p2。我想编写一个方法swapPoints该方法,该方法将 p1 的 x 和 y 坐标替换为 p2,反之亦然。

我可以通过创建一个虚拟临时点来轻松做到这一点,但是,我想只使用两个点 p1 和 p2 来完成。正如你所看到的,我的尝试我只能替换一个点的坐标。我尝试使用^=函数,但也没有给我正确的坐标。

import java.awt.Point;
public class SwapCoord{
public static void main(String[] args) {
Point p1 = new Point(5, 2);
Point p2 = new Point(-3, 6);
swapPoints(p1, p2);
System.out.println("(" + p1.x + ", " + p1.y + ")");
System.out.println("(" + p2.x + ", " + p2.y + ")");
}
public static void swapPoints(Point p1, Point p2) {
p1.x = p2.x;
p1.y = p2.y;
p2.x = p1.x;
p2.y = p1.y;
}
}

使用 xor 交换两个值背后的想法是,将一个值与自身进行 xoing 等于零,因此您可以通过执行以下操作来交换两个整数:

public static void swapPoints(Point p1, Point p2) {
p1.x ^= p2.x;
p2.x ^= p1.x;
p1.x ^= p2.x;
p1.y ^= p2.y;
p2.y ^= p1.y;
p1.y ^= p2.y;
}

最新更新