如何索引aString变量。到目前为止,我一直在尝试使用:
...
private GeoPoint points[];
int counter = 0;
...
counter ++;
String[] RowData = line.split(",");
longitude = RowData[0];
latitude = RowData[1];
Double lat = new Double(latitude);
Double lng = new Double(longitude);
points[counter] = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));
...
for(int i=0; i < pointsCounter-1; i++) {
geopoint1 = points[i];
geopoint2 = points[i+1];
}
...
每当我测试上面的内容时,它就会关闭 - 任何想法? 感谢。
对于不明确的问题感到抱歉 - 我实际上要做的是在地图叠加上绘制一条路径 - 我可以获得所有geoPoints,这使我能够绘制一条非常漂亮的虚线,即。从'a到b',然后从'c到d'等等,所以我试图找到一种记录前一个地点的方法,这样我就可以用它来从'b到c'。我试图通过使用'counter'int来使用点的索引来做到这一点。
如果我不尝试索引“积分”,那么一切正常,但如上所述,我得到一条虚线。
我希望这是有道理的 - 过去一天左右,我一直在圈子里走来走去,很抱歉,如果我觉得有点笨拙(尽管我很可能!)。
以下是更详细的代码;
try {
String line;
while ((line = reader.readLine()) != null) {
counter ++;
String[] RowData = line.split(",");
longitude = RowData[0];
latitude = RowData[1];
Double lat = new Double(latitude);
Double lng = new Double(longitude);
points[counter] = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));
for(int i=0; i < pointsCounter-1; i++){
geopoint1 = points[i];
geopoint2 = points[i+1];
p1 = new Point();
p2 = new Point();
path = new Path();
Projection projection = mapv.getProjection();
projection.toPixels(geopoint1, p1);
projection.toPixels(geopoint2, p2);
path.moveTo(p2.x, p2.y);
path.lineTo(p1.x,p1.y);
canvas.drawPath(path, mPaint);
}
}
}
catch (IOException ex) {
// handle exception
}
非常感谢提前
答案 0 :(得分:1)
如果您想要String
使用charAt
String x = "abcde"
x.charAt(0) // 'a'
x.charAt(4) // 'b'
注意charAt
会返回Character
而不是String
。
答案 1 :(得分:0)
你的pointsCounter可能已经计入了points.length,不是吗?这意味着你的循环中的point [i + 1]正在访问一个不存在的数组索引 - 这就是你的问题 - 让循环正确......
答案 2 :(得分:0)
如果我理解正确,您IndexOutOfBoundsException
循环for
points
。这是因为当你到达最后一个元素时,索引i+1
不再有效,例如
for(int i=0; i < pointsCounter-1; i++){
//when i == pointsCounter-1, i+1 == pointsCounter, which is not a valid index
geopoint1 = points[i];
geopoint2 = points[i+1];
...
}
只需执行简单的检查:
for(int i=0; i < pointsCounter-1; i++){
//when i == pointsCounter-1, i+1 == pointsCounter, which is not a valid index
geopoint1 = points[i];
if (i == pointsCounter-1) {
//there is no second point, so do something special
} else {
geopoint2 = points[i+1];
}
...
}
您可以清除此逻辑以使其按照您的意愿执行。