java - 限制for循环结果的大小

标签 java android for-loop

我正在使用 for 循环来解析 android 中的 GPX 文件,并将生成的纬度和经度放入适合谷歌静态 map 的字符串中。静态 map API 允许 URL 最多约 2000 个字符。

我想做的是遍历 gpx 文件中的条目,以便在不产生太多字符的情况下获得最大数量的细节。例如,如果经纬度为 10 个字符,那么我总是希望生成尽可能接近 200 个标记。

我从这个工作代码开始

List<Location> gpxList = decodeGPX(gpxFile);
for(int i = 0; i < gpxList.size(); i++){
    info += ((Location)gpxList.get(i)).getLatitude()
            + ","
            + ((Location)gpxList.get(i)).getLongitude() + "|";
}

这样做的明显方法是取列表的长度并除以允许的最大标记数(在本例中为 200),确保这是一个整数,然后在循环迭代时递增这么多项.但是我如何确保我不会在列表末尾出现越界错误?

编辑

明确地说,如果有意义的话,我想减少数据点的频率而不是减少点的数量。想象一下,我有一个带有 2000 个标记的 gpx 文件,可以进行往返。我想生成一个包含 200 个点的列表,它仍然给出完整的行程(精度有所损失),而不是只列出前 200 个点,它只给出行程的开始

最佳答案

在向 info 添加新字符之前字符串(我假设它是一个字符串),检查要添加的字符数,并确认 info 中有足够的空间。字符串。如果不是,则结束循环。

List<Location> gpxList = decodeGPX(gpxFile);
boolean hasRoom = true;
for(int i = 0; i < gpxList.size() && hasRoom; i++) {
    String next = ((Location)gpxList.get(i)).getLatitude()
            + ","
            + ((Location)gpxList.get(i)).getLongitude() + "|";
    if (info.length()+next.length()<=2000)
        info += next;
    else
        hasRoom = false;
}

关于java - 限制for循环结果的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26454407/

相关文章:

c++ - 如何打印 for 循环变量的所有值?

jquery - 如何使用 jQuery 使阴影闪烁?

java - 为什么我的条件从来没有满足过?

java - 使用 ProcessBuilder 应用程序没有响应

java - 从网站提取信息

java - SQLException : Column AD not in specified tables - column AD never specified

android - 在 recyclerview 中将高度设置为 wrap_content 时不显示图像

java - 内存泄漏与优化

android - iOS或android开发,如何在一定时间后使应用程序过期

android - 如何在android中打开包路径中的pdf文件?