2017-11-27 11 views
0

ArrayListのインデックス内で属性の値を更新しようとしています。 主に、サブ要素を試して更新するためにset(index、e)を使用しようとしていますが、そうすることはできません。arrayListインデックス内の1つのサブ要素を更新します。

public class GenericMissile { 
float currentX; 
float currentY; 


//set the starting location of the missile 
//X Loc 
public void setLocationX() { 
    currentX =(float) Math.ceil(Math.random()*801); 


    //Y Loc 
} 
public void setLocationY() { 
    currentY = -100; 

} 
} 

他のクラスには、次のようになります:

私の最初のクラスファイルは、配列リストが保持している属性を保持する

私はしかし、インデックスから1つのサブ要素を更新したい
import java.util.ArrayList; 

public class GameManager { 
ArrayList<GenericMissile> allM; 


public static void main(String[] args) { 
GameManager obj = new GameManager(); 
//create missiles 
obj.createMissiles(); 

} 
//add missile to arrayList 
void createMissiles() { 
//create arraylist of 25 Missiles 

allM = new ArrayList<>(); 
GenericMissile build = new GenericMissile(); 
for(int i=0;i<25;i++) { 
build.setLocationX(); 
build.setLocationY(); 
allM.add(build); 
} 
} 
} 

、Iそれを更新するために特定の属性を呼び出す方法について知りません。

私はallM.set(0、___)を使ってみましたが、GenericMissileクラスからcurrentY属性を更新するための適切な構文がわかりません。事前

答えて

0

おかげであなたはそのためのArrayList.set()方法を必要としません。代わりに、ArrayList.get(int index)を呼び出してオブジェクトを取得し、返されたオブジェクトを変更することができます。 ArrayList内の変更も反映されます。例えば

allM = new ArrayList<>(); 
GenericMissile build = new GenericMissile(); 
for (int i = 0; i < 25; i++) { 
    build.setLocationX(); 
    build.setLocationY(); 
    allM.add(build); 
} 
GeneriMissile someMissile = allM.get(0); 
someMissile.setLocation ... // do something with it 
+0

これは、すべてのインデックスサブ要素または必要なインデックス要素の値を更新しますか? たとえば、someMissile.currentX = 10と設定します。 それはそれらをすべて10に変更するか、someMissleのallM.get(0)値を10に設定するだけですか? –

+0

@ ErickP。ただ一つ。すべてのJavaブックの最初の章である本当に基本的な質問をしているので、Javaチュートリアルをもっと読みたいと思うかもしれません。 –

関連する問題