Java 如何减去或添加两个坐标

Java 如何减去或添加两个坐标,java,methods,coordinates,void,Java,Methods,Coordinates,Void,我正试着将两个城市的两个坐标进行减法和加法。我想在一个无效的方法做这件事。你有什么建议,我该怎么做 例如: 我想用city2(x2,y2)减去city1(x1,y1)的坐标,然后在主类中调用它。那么怎么做呢 我在下面写了这段代码,但它不起作用,或者我不知道如何调用它 主要类别: public class Main { public static void main(String[] args) { Coordinates paris = new Coordinates

我正试着将两个城市的两个坐标进行减法和加法。我想在一个无效的方法做这件事。你有什么建议,我该怎么做

例如:

我想用
city2(x2,y2)
减去
city1(x1,y1)
的坐标,然后在主类中调用它。那么怎么做呢

我在下面写了这段代码,但它不起作用,或者我不知道如何调用它

主要类别:

public class Main {

public static void main(String[] args) {
    
        Coordinates paris = new Coordinates(48.830103, 2.562957);
        Coordinates rioDeJaneiro = new Coordinates(-22.492147, -43.143827);
坐标类:

 public class Coordinates {

    private double latitude;
    private double longitude;

    public Coordinates(double latitude, double longitude) {
        this.latitude = latitude;
        this.longitude = longitude;
    }

    public double getLatitude() {
        return this.latitude;
    }

    public double getLongitude() {
        return this.longitude;
    }

     public void subtract(Coordinates otherCoordinates) {
           new Coordinates(this.latitude - otherCoordinates.getLatitude(),
                            this.longitude - otherCoordinates.getLongitude());
     }

您的代码无法按预期工作。 你的减法应该是下面这样的

public void subtract(Coordinates otherCoordinates) {
                this.latitude = this.latitude- otherCoordinates.getLatitude();
                this.longitude = this.longitude- otherCoordinates.getLongitude();
 }
如果纬度和经度是不可变的,那么

public Coordinates subtract(Coordinates otherCoordinates) {
           return  new Coordinates(this.latitude - otherCoordinates.getLatitude(), 
                                    this.longitude - otherCoordinates.getLongitude());
  }

这很有效。另一种方式是:

public static void subtract(Coordinates city1, Coordinates city2, Coordinates result) {
            result.longitude =  city1.getLongitude() - city2.getlongitude());
            result.latitude = city1.getLatitude() - city2.getLatitude();
}

然而,您发布的修改后的解决方案是最好的(正如已经指出的)

在后一种情况下,假设
subtract
坐标
类中的一种方法,您可以如下调用它:

Coordinates city1 = new Coordinates(...);
Coordinates city2 = new Coordinates(...);

Coordinates result = city1.subtract(city2);

“…它不起作用了,或者我不知道怎么称呼它…”-那是什么意思?你有编译错误吗?运行时异常?意外行为?请准确,并尽可能多地包含相关信息。@Turing85谢谢,是的,我没有正确解释。我没有得到我想要的结果。结果是错误的。我没有收到任何错误,但它不能正常工作。我会更加注意下一次的提问方式。请创建一个示例输入、预期输出和观察到的输出。@转义您的预期输出是什么?您想要巴黎对象中的新坐标还是新对象中的新坐标。@RamPrakash是的,我想要新坐标,就像我想要3-1=2一样,但只需要坐标。这是一种无效类型的方法。不一定是。如果
坐标
被设计为不可变,那么创建一个新的
坐标
-对象是正确的方法。在发布推测性答案之前,请要求澄清。@Turing85好观点。@RamPrakash谢谢。在我的主类中如何调用此方法?像这样:巴黎。减去(伦敦)@Escape将坐标类和主类添加到question@RamPrakash我添加了main和Coordinates,它可以工作,但会产生副作用。我不推荐这种解决方案。我宁愿重新开始使用返回值。我完全同意。但是OP想要使用一种无效的方法。只是想简单地解释一下,帖子中没有任何内容说“该方法必须有一个
void
returntype”=)。在我看来,有相互矛盾的信息。该方法的实现就好像OP想要返回一个新的
坐标
,而该方法被定义为
void
Coordinates city1 = new Coordinates(...);
Coordinates city2 = new Coordinates(...);

Coordinates result = city1.subtract(city2);