如何索引String变量?

时间:2012-02-07 13:37:30

标签: java

如何索引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
    }

非常感谢提前

3 个答案:

答案 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];
    }
    ...
}

您可以清除此逻辑以使其按照您的意愿执行。