2016-01-28 3 views
-2

Я пытаюсь реализовать этот метод вычитанияява типа точка вычитанием

Type Point subtraction

проблема, когда я пытаюсь использовать это дает мне ошибку, вот мой код

public Point subtract(Point p1, Point p2) { 
    Point p3 = new Point(); 
    p3 = p1 - p2; ////getting error here 
    return p3; 
} 


public int isHorizonatalCollision(Objects object) { 
    int tru = 0; 
    int leftColli = 1; 
    Point eqp; 
    eqp = subtract(posi(), nposi()); 

     if (eqp == objposi(object)) 
     { 
      return leftColli; 
     } 
     return tru; 
    } 
+2

'это даст мне ошибку вот мой код »- какая ошибка у вас получается? И с какого пакета вы импортировали «Point»? –

+0

Как вы думаете, 'p3 = p1 - p2;' должен работать, и почему вы думаете, что он должен работать? – Pshemo

+0

Вы не можете прямо вычесть два объекта Point, используя «-» –

ответ

-1
public static Point subtract(Point p1, Point p2) { 
    return new Point(p1.x - p2.x, p1.y - p2.y); 
} 

Или

public static Point subtract(Point p1, Point p2) { 
    return new Point(p1.getX() - p2.getX(), p1.getY() - p2.getY()); 
} 
2

Java делает не допускать перегрузки оператора, поэтому вы не можете вычитать свои пользовательские классы в Java.

Вычитание действует только на встроенных числовых примитивов и их объектные аналоги (int, double, float ... и Integer, Double ...). Java не имеет никакого способа узнать, что должно делать - на вашем классе Point.

Если семантическая вашего вычитания для вычитания каждой координаты соответственно, вы будете иметь код это таким образом:

class Point { 
    int x; 
    int y; 

    ... 

    public Point subtract(Point another) { 
     return new Point(this.x - another.x, this.y - another.y); 
    } 
} 
Смежные вопросы