java - 如何在java中计算整个链接列表的点的总距离?
问题描述
我有一个这样的节点列表: (0,0) -> (0,3) -> (4,3) -> null 我正在尝试编写一种方法来计算节点列表的距离,但是输出似乎不对。
这是我的程序。我有 2 个类,航点在链表中创建一个新点,并且 TourElement 包含点。
//路点.java:
public class Waypoint {
int x ;
int y ;
public int getX()
{
return this.x;
}
public int getY()
{
return this.y;
}
public void setXY(int x, int y)
{
this.x = x;
this.y = y;
}
double calcDistance(Waypoint other) {
//(0,0),(0,4)
double X = other.x - getX();//3
double Y = other.y - getY();//3
return Math.sqrt(X*X + Y*Y);
}
//TourElement.java
public class TourElement {
private Waypoint points;
private TourElement next;
public void setWaypoint( Waypoint points)
{
this.points = points;
}
public void setTourElement(TourElement next)
{
this.next = next;
}
Waypoint getWaypoint()
{
return this.points;
}
TourElement getNext()
{
return this.next;
}
// 这个方法的输出看起来不正确
double calcDistance()
{
double distance = 0;
TourElement current = this;
while (current.next != null)
{
distance = distance + current.points.calcDistance(this.points);
current = current.next;
}
if(current.next == null)
{
distance = distance + current.points.calcDistance(points);
}
return distance;
}
//测试用例:
private TourElement createElementList(int[][] waypoints){
assert waypoints.length > 0;
TourElement elem = new TourElement();
int lastIndex = waypoints.length-1;
Waypoint wp = createWaypoint(waypoints[lastIndex][0], waypoints[lastIndex][1]);
elem.setWaypoint(wp);
for (int i = lastIndex-1; i >= 0 ; i--) {
wp = createWaypoint(waypoints[i][0], waypoints[i][1]);
elem = elem.addStart(wp);
}
return elem;
}
public void testCalcDistance_ThreeElementsOrthogonal() {
TourElement elem = createElementList(new int[][] {{0, 0}, {0, 3}, {4, 3}});
assertEquals(7, elem.calcDistance(), EPSILON);
}
当我在 while 循环中测试我的方法时,距离 = (0,0) 和 (0,3),它是正确的。但是,当我尝试计算 2 点 (0,3) 和 (4,3) 的距离时,输出错误,因为程序计算距离 (0,0) 和 (4,3) 而不是 (0 ,3) 和 (4,3)。所以输出是8。我不知道我做错了什么,请帮助我。非常感谢你!!!!
解决方案
推荐阅读
- elasticsearch - 如何使用 query_string 同时匹配嵌套和非嵌套字段?
- python - Torchtext 与 Pytorch v1.10?
- ms-access - MS Access mid 和 instr 函数
- c++ - 如何在没有 pow()、函数或递归的情况下在 c/c++ 中使用幂函数
- r - 尝试使用 rvest 提交表单时出现卷曲错误
- assembly - mac OS 中的一步一步的 hello world
- python - Discord cogs 无法加载
- regex - dicebear api 在尝试指定 skinColor 时返回 400 错误代码
- java - 它说 Process Finished 但没有输出
- database - 从角度获取数据库数据