我正在用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()创建的新数组以添加下一点时遇到麻烦。
答案 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);
}
}