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

原文 标签 java android for-loop

我正在使用for循环来解析android中的GPX文件,并将生成的经度和纬度放入适用于Google静态地图的字符串中。静态地图api允许的网址最多为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/

相关文章:

java - shell_exec将多行输出显示为单行

android - 为什么以编程方式为Android线性布局列设置权重无法正常工作?

android - RecyclerView 适配器的生命周期是什么?

c - 循环在C中结束时如何执行指令

JavaFX 从 DatePicker 中提取日历弹出窗口/只显示弹出窗口

java - 使用Capistrano滚动部署Java/Tomcat应用程序

java - ActiveMQ队列的 Activity 使用者过多

android - 按Android Studio的PLAY进行特定的调试

java - 使用for循环在Java中创建2D协调平面?

java - 从数组列表中存储的对象中调用方法