如何交换两点的坐标?

时间:2018-09-28 01:23:27

标签: java swap

我定义了两个点,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;
    }
}

1 个答案:

答案 0 :(得分:4)

使用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;
}