Как поменять координаты двух точек? - PullRequest
0 голосов
/ 28 сентября 2018

Я определил две точки, p1 и p2.Я хотел бы написать метод swapPoints, который заменяет координаты x и y для p1 на 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;
    }
}

1 Ответ

0 голосов
/ 28 сентября 2018

Идея обмена двумя значениями с помощью 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...