質問: new ArrayList(); 一手目の変数recordの内容 [[[Ljava.lang.String;@4a4fbd34] [[ , , , , , , , ], [ , , , , , , , ], [ , , , , , , , ], [ , , , ●, ○, , , ], [ , , , ○, ●, , , ], [ , , , , , , , ], [ , , , , , , , ], [ , , , , , , , ]] 二手目の変数recordの内容(一手目の要素が更新している!?) [[[Ljava.lang.String;@4a4fbd34, [[Ljava.lang.String;@1f31d4ae] [[ , , , , , , , ], [ , , , , , , , ], [ , , , , ●, , , ], [ , , , ●, ●, , , ], [ , , , ○, ●, , , ], [ , , , , , , , ], [ , , , , , , , ], [ , , , , , , , ]] [[ , , , , , , , ], [ , , , , , , , ], [ , , , , ●, , , ], [ , , , ●, ●, , , ], [ , , , ○, ●, , , ], [ , , , , , , , ], [ , , , , , , , ], [ , , , , , , , ]] ``` ### (参考までに) オセロのひっくり返すロジックは下記サイトと同じです。 https://techacademy.jp/magazine/22228 不備、不明点等あればご連絡ください! よろしくお願いいたします!
回答: 配列のclone()は、シャローコピーです。 その為、各要素(この場合、String[])は、同一オブジェクトになり、手が進むごとに、過去の盤面も更新されていきます。 必要なのは、ディープコピーなので、専用メソッドを作成して、clone()の代わりに、そのメソッドを呼ぶように変更してください。 なお、String[][]は、String[]の配列です。 ディープコピーの際は、先に、Sting[]の配列を要素分確保し、String[]のクローンを要素毎に作成し、事前に確保した配列に納めてください。