0

作成した arrayList から線分 (長さ) を計算しようとしています。これはJAVAにあります。すべてが思いどおりに機能しますが、次のメッセージが表示されます。 .ArrayList.get(不明なソース) "

arraylist のインデックスに「+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);
     }// /
}
4

3 に答える 3

0

@rgettman の回答に加えて、次のPoint2D.distanceように組み込みメソッドを使用してみてください。

public static void showStats(ArrayList<Point> myPoints) {
    double distance = 0.0;
    for (int i = 0; i < myPoints.size(); i++) {
        Point first = myPoints.get(i);
        Point second = myPoints.get((i+1) % myPoints.size());
        // use distance method
        distance += first.distance(second);
        System.out.println(second.x);
     }
}
于 2013-05-22T19:29:06.337 に答える