【问题标题】:For Loop doesnt add point to an arrayFor循环不会将点添加到数组
【发布时间】:2013-04-19 14:59:04
【问题描述】:

我有以下 for 循环,它查看结果的字符串 ArrayList,字符串中的每个项目都由“::”分隔:

ArrayList<String> resultsArray = MyClass.results;
        Integer numPoints = resultsArray.size();

        for (int i =0;i<numPoints;i++){
            String[] pointDetails = resultsArray.get(i).split("::");
            String pointName = pointDetails[0];
            String pointDescription = pointDetails[1];
            String coordinates = pointDetails[2];

        //Turn coordinates into geopoints
            String coord[] = coords.split(",");
            Integer  lng= (int) (Double.valueOf(coord[0]) * 1000000);
            Integer lat = (int)(Double.valueOf(coord[1])*1000000);
            GeoPoint gPoint = new GeoPoint(lng,lat);


         arrayPointName = new ArrayList <String>();
         arrayPointDescription = new ArrayList <String>();
         arrayPointCoords=new ArrayList<GeoPoint>();
         arrayPointName.add(pointName);
         arrayPointDescription.add(pointDescription);
     arrayPointCoords.add(gPoint);
          }

我知道我在初始字符串 ArrayList 中有 20 个点,并且已经打印出它的大小来检查这一点。但是,当我打印出新的数组列表(例如 arrayPointName)时,它们只包含一个点。知道为什么会这样吗?

【问题讨论】:

  • 每次迭代时,您都会在 for 循环中创建 arrayPointName 的新实例,这意味着您将永远只有一个项目。
  • 解决问题的最佳方法是使用 IDE 的调试工具跟踪您的代码,这将花费您几分钟的时间来定位问题。
  • 因为您在 for 循环中重新创建了 arrayPointName

标签: java android string arraylist


【解决方案1】:

看看这段代码:

arrayPointName = new ArrayList <String>();
arrayPointDescription = new ArrayList <String>();
arrayPointCoords=new ArrayList<GeoPoint>();

这三个语句 - 将新的空 ArrayList 引用分配给您的变量 - 正在循环的每次迭代中执行。

它们应该你的循环之前出现:你只想初始化一次变量(创建三个列表),然后在每次迭代中添加一个新项目。

附带说明,像这样填充多个集合通常是个坏主意。通常最好创建一个封装相关数据(在这种情况下为名称、描述、坐标)的单一类型,然后创建该类型项目的 single 集合。这通常更容易处理。

【讨论】:

    【解决方案2】:

    您将坐标用作 ArrayList 而没有启动它。此外,您还为每次迭代 arrayPointName、arrayPointDescription 和 arrayPointCoords 启动,这就是它们丢失在上一次迭代中创建的值的原因。他们应该在开始循环之前启动一次

    如果您给我们一个 resultsArray 字符串的样本,将会很容易为您提供帮助。

    【讨论】:

      猜你喜欢
      • 2020-10-22
      • 2021-07-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-02
      • 2019-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多