2016-03-27 11 views
2

最初に謝罪すれば、これは本当に解決するのが簡単ですが、私はまだ学んでいます。 Array [] []という配列のArrayListがあり、それらをすべて印刷しようとしています。 以下のコードを使用すると、同じボードが複数回印刷されるだけで、リストにあるすべてのボードが印刷されるわけではありません。どこが間違っているのかわかりません。配列の配列を印刷するjava

毎回上書きしない限りですか?

for (int i = 0; i < Player.getBoardsAll().size(); i++) { 
    TextIO.putln(); 
    TextIO.put(" "); 

    for (char a = 'A'; a < 'A' + Board.getColumns(); a++) { 
     TextIO.put(a, 4); 
    } 

    TextIO.putln(); 
    TextIO.putln(); 

    for (int r = 0; r < Board.getRows(); r++) { 
     TextIO.putf("%-3d", r+1); 

     for (int c = 0; c < Board.getColumns(); c++) { 
      TextIO.put(Player.getBoardsAll(i)[r][c], 4); 
     } 

     TextIO.putln(); 
     TextIO.putln(); 
    } 
} 

これは、呼び出し、上記設定されたものである。

private static ArrayList<String[][]> boardsAll = new ArrayList<String[][]>(); 

public static void setBoardsAll(String[][] input) { 
    boardsAll.add(input); 
} 

public static String[][] getBoardsAll(int location) { 
    return Player.boardsAll.get(location); 
} 

public static ArrayList<String[][]> getBoardsAll() { 
    return boardsAll; 
} 
+0

リストを正しく読み込んでいないと思われます。あなたはデバッガを試しましたか? –

+2

外側のループに閉じ括弧を忘れてしまった。 – Gendarme

+0

@BurakTutanlarは、編集で閉じ括弧を追加しました。おそらく、元のコードにもこのエラーがありますが、その場合はコンパイラエラーが発生しているはずです。 – Gendarme

答えて

0

を、それが常に同じボードを印刷している場合は、その後、多分あなたはArrayListのに同じボードを複数回挿入します。あなたがこれを行う場合は

String[][] board = new String[x][y]; 
// you inserted some data into board 
setBoardsAll(board); // you added the board 
// you cleared and/or re-inserted new data to 
// the same board without creating another 2D array. 
setBoardsAll(board); 

は、あなたが同じ2D配列の複数のポインタとのArrayListを持っています。たとえば、あなたがそのような何かをやりました。これが問題であれば、ボードごとに別のアレイを作成する必要があります。たとえば、最初のボードを作成してArrayListに追加したとします。最初のボードを編集すると、ArrayListの最初の項目も編集されます。これは、両方が同じ配列を指しているためです。

+0

それは意味をなさないと私は思いました。私は 'boardsAll.add()'を使ってその状態を配列に書き込むと思っていました。各アレイの状態を保存する最も良い方法は何でしょうか?私は多くの個々の配列を作成する必要はありませんか? – Dougie751

+0

あなたはそうしなければならないようです。個々のボードがたくさんありますか? 2D配列のボードを表現していますか?行と列が一定であれば、2D配列は良好です。たくさんの個別の2D配列が必要な場合は、個々の配列をたくさん作成する必要があります。 –

+0

ありがとう、私は私が今何をする必要が大雑把に知っていると思う。 – Dougie751