私はこれについて多くの投稿を読んでいますが、何も試したことがないようです。どんな助けでも大歓迎です。Javaの配列リストにオブジェクトに格納されている値を見つける方法
私は2つのクラス、ColouredShape
とShapeMatchingGame
を持っています。 私はColouredShape
オブジェクトを2つの引数を使用して作成し、それらをShapeMatchingGame
クラスのArrayListに追加しようとしています。 私は4つの形状* 3のそれぞれの4つの形と3つの色が必要なので、配列の36の項目。
ループ内の配列に36個のオブジェクトが追加されていますが、配列のオブジェクトの値にアクセスしようとすると、そのインデックスのオブジェクトの期待値が表示されません。 私が尋ねようとしているのは、値に誤ってアクセスしているか、オブジェクトを作成して配列に追加するのに間違ったことをしているかどうかです。
public class ColouredShape {
static int shapeValue;
static int colourValue;
static String colour, shape;
public ColouredShape() // Default constructor
{
this.shapeValue = 1;
this.colourValue =1;
this.colour ="";
this.shape ="";
}
public ColouredShape (int shapeValue,int colourValue) // Constructor with 2 arguments
{
this.shapeValue = shapeValue;
this.colourValue =colourValue;
this.colour = colour;
this.shape =shape;
}
public int getColour()
{
return colourValue;
}
public int getShape()
{
return shapeValue;
}
public class ShapeMatchingGame {
static int noShapes;
static ArrayList<ColouredShape> ColouredShapes = new ArrayList<ColouredShape>();
static int index;
static int shapeValue=1;
static int colourValue;
public static void main(String[] args)
{
ObjectCreation();
}
public static void ObjectCreation()
{
do// runs loops 3 times to create 3 of every shape/colour combo
{
do // loop to continue onto the next shape until 4 are created
{
do // loop to create 3 of colours of same shape
{
colourValue++;
System.out.println("Shape value " +shapeValue + " colour value " +colourValue);
ColouredShape gameShapes = new ColouredShape(shapeValue,colourValue);
ColouredShapes.add(gameShapes);//creates an object of colourshapes and passes the current shapevalue + colourvalue as arguments then adds it to the arraylist
System.out.println ("Value of object at array index "+ index + " shape value " + ColouredShapes.get(index).getShape()+" colour value " +ColouredShapes.get(index).getColour()+ "colour variable value = " + colourValue);
index++;
for (ColouredShape colouredShape : ColouredShapes)
{
System.out.println(colouredShape.getClass().getName() + "/" +
colouredShape.shape + "/" +
colouredShape.colour);
}
}while(colourValue < 3);
System.out.println ("Value of object at array index "+ "0" + " shape value " + ColouredShapes.get(0).getShape()+" colour value " +ColouredShapes.get(0).getColour()+ "colour variable value = " + colourValue);
colourValue=0;//reset colourValue to allow next iteration of the loop
shapeValue++;//incrementing shapeValue to add colours to next shape
System.out.println ("Value of object at array index "+ "0" + " shape value " + ColouredShapes.get(0).getShape()+" colour value " +ColouredShapes.get(0).getColour()+ "colour variable value = " + colourValue);
}while(shapeValue < 5);
shapeValue=1; // resetting shapeValue to allow next iteration of the loop
noShapes++;
}while (noShapes<3);
}
}
期待どおり 'colour'と' colourValue'の両方を持っていないのはなぜ結果がすべきですか?あなたのコンストラクタが1だけを使用しているようです。 – 4castle
[なぜ、私のArrayListはリストに最後に追加されたアイテムのN個のコピーを含んでいますか?](http://stackoverflow.com/questions/19843506/why-does-my-最後にアイテムに追加されたリストのリストを含む) – 4castle
あなたの出力と期待される出力は何ですか? – samirk433