2012-01-02 12 views
0

私はこのプロジェクトをうまく近づけることができますが、私は夢中になって、私の研究で何も見つけることができませんそれは働いている。インデックスを使ってforループの変数を宣言する(i)

私が行う必要があるのは、forループがレコードセットを通過するたびに新しい変数を宣言することですが、変数名にインデックス値(i)を使用する必要があります。

私は助けを必要とラインは、私はループが再び通過するために、例えば、私の変数はO1、O2、O3、など私になってしまうはずです新しい変数を定義するために、それぞれの時間を必要とBottles o[i] = new Bottles();

です[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); 
     } 
+0

実行時に変数を*名前*できないことに注意してください。あなたがそれを行うことができる唯一のことは、iをインデックスとして使用して、リストoから要素を取得します。戻り値は、ボトルへの名前のない参照です。さらに、「ボトル」が実際にどのようなものを表しているかを非常に注意深く見てください。http://www.oracle.com/technetwork/java/codeconventions-135099.html#367 Java命名規則を読むことをお勧めします。 。 –

答えて

5
Bottles o[i] = new Bottles(); 

次のようになります。そして、

Bottles o = new Bottles(); 

[i]をドロップします。新しいキーワードは、繰り返しごとに新しいオブジェクトを作成します。

  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); 
+0

パーフェクト!ありがとうジョー!! – Rmilligan2372

0

ちょうど使用:

Bottles o = new Bottles(); 
0

変数名にインデックスを必要としない - それはちょうど、コンパイラのためです。あなたは言うことができる

ボトルボトル=新しいボトル();

o [i]を使用すると、どこでもボトルを使用できます。

ループを実行するたびに、新しいボトルが作成されます。変数名が同じでも、それは別個のオブジェクトであり、後でArrayListでインデックスを作成できます。

関連する問題