我正在尝试从我创建的 arrayList 计算线段(长度)。这是在 JAVA 中。一切都按我的意愿工作,但是我收到以下消息:“线程“主”java.lang.IndexOutOfBoundsException 中的异常:索引:2,大小:2 在 java.util.ArrayList.rangeCheck(Unknown Source) at java.util .ArrayList.get(未知来源)“
将“+1”作为数组列表的索引会造成麻烦。这是导致错误消息的原因,但是,它确实计算了线段。它打印它们,然后打印可怕的错误语句。
myPoints.get((i+1)).x ; <--- (i+1) 导致问题 tempYFirst = myPoints.get(i).y; <--- 没有 +1 可以正常工作,但它不会做我想做的事。
public static void showStats(ArrayList<Point> myPoints)
{
double distance = 0.0;
double length;
double tempX;
double tempY;
double tempX2;
double tempY2;
int tempFirst;
int tempSecond;
int tempYFirst;
int tempYSecond;
int xValue;
int yValue;
// Line segments are calculated by the distance formula of:
// Sqrt ( (x2-x1)^2 + (y2-y2)^2)
for (int i = 0; i < myPoints.size(); i++) {
tempFirst = myPoints.get(i).x;
tempSecond = myPoints.get((i+1)).x ;
tempYFirst = myPoints.get(i).y;
tempYSecond = myPoints.get((i+1)).y;
xValue = tempFirst - tempSecond;
yValue = tempYFirst - tempYSecond;
tempX2 = Math.pow(xValue, 2);
tempY2 = Math.pow(yValue, 2);
distance += Math.sqrt((tempX2 + tempY2));
System.out.println(tempSecond);
}// /
}