将一个班级的信息添加到另一个班级的数组列表中

时间:2019-03-05 19:13:36

标签: java

我正在用Java做一个基本的GPS流程项目。它的点类是当前位置,如下所示;

public class Point {
// Constants useful for bounds checking, etc

private static final double MIN_LONGITUDE = -180.0;
private static final double MAX_LONGITUDE = 180.0;
private static final double MIN_LATITUDE = -90.0;
private static final double MAX_LATITUDE = 90.0;
private static final double MEAN_EARTH_RADIUS = 6.371009e+6;

// TODO: Define fields for time, longitude, latitude and elevation

public static ZonedDateTime time = ZonedDateTime.now();
public static double longitude;
public static double latitude;
public static double elevation;

// TODO: Define a constructor

public Point(ZonedDateTime timestamp, double longitude, double latitude, double elevation) {


    this.longitude = longitude;
    this.latitude = latitude;
    this.elevation = elevation;

}

Point point1 = new Point ( time, -1.54853, 53.80462, 72.5);

// TODO: Define getters for the fields


public static ZonedDateTime getTime() {
    return time;
}

public static double getLongitude() {
    return longitude;
}

public static double getLatitude() {
    return latitude;
}

public static double getElevation() {
    return elevation;
}

// TODO: Define a toString() method that meets requirements
public String toString() {

    return "( " + longitude + ", " + latitude + " ),  " + elevation;
}

然后是另一个类,跟踪,它应该是显示旅程的点的集合。但是,我正在为如何解决这个问题而苦苦挣扎,我创建了一个链表,但不确定从何处去。我一直在扩展类,但是在add方法中使用Point时出现标识符预期错误。

import java.time.ZonedDateTime; 导入java.util.ArrayList;

课程跟踪{

//public LinkedList<Point> Track = new LinkedList<>();


public Track() {

    ArrayList<Point> Track = new ArrayList<>();

}

public static void add(Object Point){

    Track.add((Point));
}

} 但是我在引用track()创建的新数组以添加下一点时遇到麻烦。

1 个答案:

答案 0 :(得分:0)

好吧,所以您尝试在这里做很多不同的事情-我将其放置的方式不是唯一的方法,而是要考虑的事情...我已将所有内容都放入一个包装中,因此您需要在您的日食设置中进行相应的重组...

此处进行了一些修改,因为您以静态方式引用了var和方法,不是您不能这样做,但是出于您要实现的目的,这可能是一种更好的学习体验。 我还删除了已死的代码...时间戳部分可能不是您要查找的部分-但这似乎更适合此处。

package com.gps;
import java.time.ZonedDateTime;

public class Point {

    // TODO: Define fields for time, longitude, latitude and elevation

    public ZonedDateTime time;
    public double longitude;
    public double latitude;
    public double elevation;

    public Point(ZonedDateTime timeStamp, double longitude, double latitude, double elevation) {
        this.time = timeStamp;
        this.longitude = longitude;
        this.latitude = latitude;
        this.elevation = elevation;

    }

    // TODO: Define getters for the fields

    public ZonedDateTime getTime() {
        return time;
    }

    public double getLongitude() {
        return longitude;
    }

    public double getLatitude() {
        return latitude;
    }

    public double getElevation() {
        return elevation;
    }

    @Override
    public String toString() {
        return "Point [time=" + time + ", longitude=" + longitude + ", latitude=" + latitude + ", elevation="
                + elevation + "]";
    }



}

这里我添加了一个toString(),以便在从Engine类进行打印时可以看到它,我已经重命名了变量和方法,如我在第一篇文章中提到的那样,因此您可以跟踪发生了什么-这很重要确定要这么做...

package com.gps;

import java.util.ArrayList;

public class Track {

     ArrayList<Point> track = new ArrayList<>();


    public void add(Point point){

        track.add(point);
    }


    @Override
    public String toString() {
        return "Track [track=" + track + "]";
    }


}

由于我唯一需要处理的数据就是您提供的返回的数据-日期可能不正确,但是从Mykong的示例中来看,它工作得很好:)

package com.gps;

import java.time.ZonedDateTime;

public class Engine {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Track track = new Track();
        Point point = new Point (ZonedDateTime.now(), -1.54853, 53.80462, 72.5);
        System.out.println(point.getTime());
        track.add(point);

        System.out.println(track);
    }

}
相关问题