2015-07-17 4 views
3

Я пытаюсь вычесть координаты 2 векторов, но я новичок, который не может понять код ООП, в котором я нуждаюсь. Это то, что у меня есть до сих пор.Простой декартовой калькулятор координат

public class practice { 

    public static class vector{ 
     int a; 
     int b; 
     public vector(int a, int b){ 
      this.a = a; 
      this.b = b; 
     } 
     public String coordinate(int x, int y){ 
      x = this.a - a; 
      y = this.b - b; 
      return x + " " + y; 
     } 
    } 

    public static void main(String[] args) { 
     vector vec1 = new vector(2,3); 
     vector vec2 = new vector(3,4); 

     vector.coordinate? 

    } 
} 

Как я могу вычесть int из двух векторных объектов?

+0

Быстрый вопрос, что вы пытаетесь сделать в 'coordinate' метода? – Rakesh

+0

Вы имеете в виду vec1-vec2 из приведенного выше примера? –

+0

Общей хорошей практикой является наличие первой буквы в именах классов Capitalized. В вашем случае имя класса должно быть «Практика» и «Вектор». Но будьте осторожны при использовании имени 'Vector', не забудьте указать правильное пространство имен – Rakesh

ответ

4

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

package com.test; 

public class Vector { 

    private int x; 
    private int y; 

    public Vector(int x, int y) { 
     this.x = x; 
     this.y = y; 
    } 

    /** 
    * @return the x 
    */ 
    public int getX() { 
     return x; 
    } 

    /** 
    * @return the y 
    */ 
    public int getY() { 
     return y; 
    } 
    // if you don't want to create new vector and subtract from it self, then return type of this method would be void only. 
    public Vector subtract(Vector other) { 
     return new Vector(this.x - other.x, this.y - other.y); 
    } 

    @Override 
    public String toString() { 
     return this.x + " : "+ this.y; 
    } 

    public static void main(String[] args) { 
     Vector vector1 = new Vector(10, 10); 
     Vector vector2 = new Vector(5, 5); 
     Vector vector3 = vector1.subtract(vector2); 
     System.out.println(vector3); 
    } 
} 
+2

Только для кода ответы не рекомендуются. – Christian

+0

это нормально сейчас ?? –

+0

Nice попробовать. Не совсем ... – Christian

2

Я думаю, вы просто хотите назвать метод coordinate от vec1, используя данные от vec2. если так это один из способов сделать это:

System.out.println(vec1.coordinate(vec2.a,vec2.b)); 

в этом случае вам также необходимо изменить метод координат для:

public String coordinate(int x, int y){ 
     x = this.a - x; 
     y = this.b - y; 
     return x + " " + y; 
    } 
+1

Кроме того, это должно быть 'x = this.a - x' вместо' x = this.a - a' –

+0

Идя по его определению 'coord', я не думаю, что он делает то, что он хочет. – Rakesh

+0

@tobias_k Да, только что понял, что метод тоже неправильный. – nafas

0

Вы можете создать метод XsubtractY, для которого вы вводите два вектора, то внутри он получает каждый векторы а и Ь и вычитает их друг от друга, чтобы вернуть новый вектор. Как следует:

public class practice { 

public static class vector{ 
    int a; 
    int b; 
    public vector(int a, int b){ 
     this.a = a; 
     this.b = b; 
    } 
    public static vector XsubtractY(vector x, vector y){ 
     vector newVector = new vector(x.a-y.a, x.b - y.b); 
     return newVector; 
    } 

} 

public static void main(String[] args) { 
    vector vec1 = new vector(2,3); 
    vector vec2 = new vector(3,4); 
    vector newVector = vector.XsubtractY(vec1, vec2); 
    System.out.println("New vector a: " + String.valueOf(newVector.a)); 
    /* New vector a: -1 */ 
    System.out.println("New vector b: " + String.valueOf(newVector.b)); 
    /* New vector b: -1 */ 

} 
} 

Новый вектор становится (-1, -1)

Смежные вопросы