如何交换两点的坐标?
How to swap the coordinates of two point?
我定义了两个点,p1和p2。我想写一个方法 swapPoints
用 p2 替换 p1 的 x 和 y 坐标,反之亦然。
我可以通过创建一个虚拟的临时点轻松地做到这一点,但是,我只想使用 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 交换两个值背后的想法是,将一个值与自身进行异或等于零,因此您可以通过以下方式交换两个整数:
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;
}
我定义了两个点,p1和p2。我想写一个方法 swapPoints
用 p2 替换 p1 的 x 和 y 坐标,反之亦然。
我可以通过创建一个虚拟的临时点轻松地做到这一点,但是,我只想使用 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 交换两个值背后的想法是,将一个值与自身进行异或等于零,因此您可以通过以下方式交换两个整数:
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;
}