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