如何在Java中的方法中使用构造函数参数?

如何在Java中的方法中使用构造函数参数?,java,Java,使用上面这个精确的方法签名(timeTo)如何创建第二个GPSping 我的目标是创建一个计算两次ping之间时间的方法。您只需调用getPingTime方法,该方法返回另一个对象的pingTime。这意味着您需要在GPSping对象中使用getPingTime方法 public class GPSping { private double pingLat; private double pingLon; private int pingTime; publi

使用上面这个精确的方法签名(timeTo)如何创建第二个GPSping


我的目标是创建一个计算两次ping之间时间的方法。

您只需调用getPingTime方法,该方法返回另一个对象的pingTime。这意味着您需要在GPSping对象中使用getPingTime方法

public class GPSping {

    private double pingLat;
    private double pingLon;
    private int pingTime;

    public GPSping(double Lat, double Lon, int Time)
    {
       pingLat = Lat;
       pingLon = Lon;
       pingTime = Time
    }

    public int timeTo(GPSping anotherPing)
那么您的timeTo方法可以如下所示

public int getPingTime(){
 return pingTime;
}

假设每个变量都有getter/setter,就可以做到这一点

public int timeTo(GPSping anotherPing){
 return getPingTime()-anotherPing.getPingTime();
}
你的getter应该是这样的

public int timeTo(GPSping anotherPing) {
   return anotherPing.getPingTime() - this.pingTime; // If you want just 
   // magnitude use Math.abs()
}

有关

的更多信息,您可以在此处使用lombok

实际上,您可以使用注释(@Getter、@Setter、@allargsconstuctor)而不是手动创建

使用这些注释,无需手动实现mutator和accessor方法。尽管大多数IDE允许您生成这些方法,但使用Lombok可以使类看起来更干净,尤其是当您有一长串字段时

public int getPingTime() {
 return pingTime;
}

实际上,您不需要额外的setter或getter。这是一个类,您可以直接访问它的属性:

@Getter
@Setter
@AllArgsConstructor
public class GPSping {

    private double pingLat;
    private double pingLon;
    private int pingTime;

public int timeTo(GPSping newPing){
 return getPingTime()-newPing.getPingTime();
}

}

你说的“创建二级GPSping”是什么意思?你不是“创建二级GPSping”;在
timeTo
内,
将指第一个“ping”,而
另一个ping
将指第二个“ping”。检查它们的属性以计算时间差。(顺便说一句,在Java中,使用
WordCase
作为类型名称并将首字母缩略词视为单词是最佳做法,因此这里建议使用
GpsPing
)请原谅我缺乏知识,但我已经做了更改,但是当要求输入GPSping1.timeTo(gpspinganotherping)时,我应该输入什么?在设置第一次ping时,它只为条目提供了一个字段,而不是三个。关于命名:参数,如变量名应该是camelCase,所以“双lat,双lon,…”,并且要注意缩写,也是。一个
getPing
会在一些其他类型上建议一个属性
ping
,该属性不是
GPSping
。这里合适的访问器应该是
getPingTime()
。此外,最好不要在这样的方法中使用
abs
,因为您可能会关心排序;如果需要,让呼叫方使用abs。好的。我将进行这些编辑。我之所以使用Math.abs,是因为我使用了负差。相反,负差告诉你这两个对象中的哪一个先出现,而不是它们之间的距离。请原谅我的知识不足,但我已经做了更改,但是当要求输入GPSping1.timeTo(gpspinganotherping)时,我应该输入什么? 它只会为条目提供一个字段,而不是设置第一次ping时的三个。@LachieJ让我们假设您有两个ping对象
gpSping1
gpSping2
。要获得差异,您可以执行
gpSping1.timeTo(gpSping2)
将结果保存在变量中或仅打印它。
public class GPSping {

    private final int pingTime;
    private final double pingLat;
    private final double pingLon;

    public GPSping(int pingTime, double pingLat, double pingLon) {
        this.pingTime = pingTime;
        this.pingLat = pingLat;
        this.pingLon = pingLon;
    }

    public int timeTo(GPSping anotherPing) {
        return Math.abs(pingTime - anotherPing.pingTime);
    }
}