My-CodeIndexOutOfBoundException für Arraylist
public List<GeoPoint> compute_polygon(List<GeoPoint> waypoints, double d)
{
int N = waypoints.size();//25
int T = 2 * N - 1;//49
// GeoPoint[] reduced_waypoints = waypoints.toArray(new GeoPoint[waypoints.size()]);
List<GeoPoint> polygon = new ArrayList<GeoPoint>(T);
for (int i = 1; i < N - 1; i++)
{
GeoPoint M = get_disp(waypoints.get(i - 1), waypoints.get(i), waypoints.get(i + 1), d);
polygon.add(i, v_add(waypoints.get(i), M));// here it fails and throws exception.
polygon.add(T-i, v_sub(waypoints.get(i), M));
}
}
Fehlerausgabe
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.set(ArrayList.java:444)
at de.carbook.vendor.search.PathPolygon.compute_polygon(PathPolygon.java:40)
at de.carbook.vendor.search.Cleansing_the_waypoints.main(Cleansing_the_waypoints.java:41)
Ich bin nicht in der Lage, um herauszufinden, was das Problem verursacht.
der Fehler ist bei polygon.add(i, v_add(waypoints.get(i), M));
Hier schlägt es fehl und wirft Ausnahme.
versuchte ich polygon.add(index,element)
und polygon.set(index,element)
es nicht auf beiden Fällen
Während Debuggen ich diese Zeile gefunden List<GeoPoint> polygon = new ArrayList<GeoPoint>(T);
initiallized ist (leer) auf null. Ist es ein Problem?
aktualisieren 1
public List<GeoPoint> compute_polygon(List<GeoPoint> points, double d)
{
int N = points.size();//25
int T = 2 * N - 1;//49
GeoPoint[] waypoints = points.toArray(new GeoPoint[N]);
GeoPoint[] polygon = new GeoPoint[T];
for (int i = 1; i < N - 1; i++)
{
GeoPoint M = get_disp(waypoints[i - 1], waypoints[i], waypoints[i + 1], d);
polygon[i] = v_add(waypoints[i], M);
polygon[T - i] = v_sub(waypoints[i], M);
}
GeoPoint A = v_mul(v_nor(v_prp(v_sub(waypoints[1], waypoints[0]))), d);
GeoPoint B = v_mul(v_nor(v_prp(v_sub(waypoints[N-1], waypoints[N-2]))), d);
polygon[0] = v_add(waypoints[0], A); polygon[T] = v_sub(waypoints[0], A);
polygon[N - 1] = v_add(waypoints[N-1], B); polygon[N] = v_sub(waypoints[N-1], B);
List<GeoPoint> poly = new ArrayList<GeoPoint>(Arrays.asList(polygon));
System.out.println(poly);
return poly;
}
Fehler bei Update
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 49
at de.carbook.vendor.search.PathPolygon.compute_polygon(PathPolygon.java:67)
at de.carbook.vendor.search.Cleansing_the_waypoints.main(Cleansing_the_waypoints.java:41)
Verwenden Sie 'polygon.add (v_add (waypoints.get (i), M))' anstelle von 'polygon.add (i, v_add (waypoints.get (i), M))' – Jens
@Jens, aber ich brauche dieser Index, um Punkte in einer Reihenfolge zu platzieren. –
Aber Sie fügen es in der gleichen Reihenfolge mit beiden Anweisungen hinzu. – Jens