使用索引(i)在for循环中声明变量

时间:2012-01-02 19:12:54

标签: java android variables dynamic loops

我非常接近让这个项目发挥作用,但是我被困在一件令我疯狂的事情上,我在研究中找不到任何有用的东西。

我需要做的是每次for循环遍历记录集时声明一个新变量,但我需要在变量名中使用索引值(i)。

我需要帮助的一行是Bottles o[i] = new Bottles();

每次for循环再次通过时我需要定义一个新变量,例如,我的变量最终应该是o1,o2,o3等。我现在在[i]上遇到语法错误我似乎无法找到如何做到这一点。

对我在这里缺少什么的想法?

private void getBottles() {
        try {
            m_bottles = new ArrayList<Bottles>();
            for (int i = 0; i < bottleNamesMap.size(); i++) {
                Bottles o[i] = new Bottles();
                o[i].setbottleID(bottleIntMap.get("bottleID" + i));
                o[i].setname_abbr(bottleNamesMap.get("name" + i));
                o[i].setorigin(bottleNamesMap.get("origin" + i));
                o[i].setbottlePicture(bottleNamesMap.get("bottlePicture" + i));
                o[i].setprice_reported(bottleNamesMap.get("price" + i));
                o[i].setdistillery(bottleNamesMap.get("distillery" + i));
                o[i].setagg_score(bottleIntMap.get("aggscore" + i));
                m_bottles.add(o[i]);
                Thread.sleep(2000);
                Log.i("ARRAY", "" + m_bottles.size());
            }
          } catch (Exception e) {
            Log.e("BACKGROUND_PROC", e.getMessage());
          }
          runOnUiThread(returnRes);
      }

3 个答案:

答案 0 :(得分:5)

 Bottles o[i] = new Bottles();

应该是:

  Bottles o = new Bottles();

然后放下[i]。 new关键字将在每次迭代时创建一个新对象。

            Bottles o = new Bottles();
            o.setbottleID(bottleIntMap.get("bottleID"+i));
            o.setname_abbr(bottleNamesMap.get("name"+i));
            o.setorigin(bottleNamesMap.get("origin"+i));
            o.setbottlePicture(bottleNamesMap.get("bottlePicture"+i));
            o.setprice_reported(bottleNamesMap.get("price"+i));
            o.setdistillery(bottleNamesMap.get("distillery"+i));
            o.setagg_score(bottleIntMap.get("aggscore"+i));
            m_bottles.add(o);

答案 1 :(得分:0)

只需使用:

Bottles o = new Bottles();

答案 2 :(得分:0)

您不需要变量名中的索引 - 这仅适用于编译器。你可以说

瓶装瓶=新瓶装();

然后在你使用的任何地方使用瓶子o [i];

每次循环都会创建一个新的Bottles - 尽管变量名相同,但它是一个独特的对象,你可以稍后通过ArrayList对其进行索引。