2016-11-27 6 views
0

配列内の配列の要素を変更する方法がわかりません。Javaの配列内の配列の要素を変更する

public class testOut{ 

public static void main(String[] args) { 

    String board[][] = generate(7,7); 

    print(board); // prints a 7x7 table with 49 "O"s 

    board[2][2] = "X"; // This is the line I'm concerned about 
    System.out.println(board[2][2]); // prints out "X" 
    System.out.println(board[1][1]); // prints out "Null" 

    print(board); // still prints a 7x7 table with 49 "O"s 

} 

static String[][] generate(int row, int column){ 


    String[][] board = new String[row+1][column+1]; 
    for (int x=0; x < row; x++){ 

     for (int y=0; y < column; y++){ 

      board[row][column] = "#"; 
     } 
    } 
     return board; 

} 

static void print(String[][] board){ 

    int row = board.length - 1; 
    int column = board[0].length - 1; 

    for (int x=0; x < row; x++){ 

     for (int y=0; y < column; y++){ 
      System.out.print(board[row][column]); 
     } 
     System.out.println(""); 
    } 

} 
} 

出力:

OOOOOOO 
OOOOOOO 
OOOOOOO 
OOOOOOO 
OOOOOOO 
OOOOOOO 
OOOOOOO 
X 
null 
OOOOOOO 
OOOOOOO 
OOOOOOO 
OOOOOOO 
OOOOOOO 
OOOOOOO 
OOOOOOO 

私が把握しようとしている -

午前に私ができる「X」を印刷することが、私の印刷機能は、「X」が印刷されないのはなぜテーブル?

なぜ私のコードが正しく各部分を参照するテーブルをプリントアウトすることができますが、私は、個々の要素を印刷しようとすると、それはnullを与えますか?

私は2つの問題が関連していると推測しています。 forループでは動作しますが、ループの外側では動作しません。

+0

私はあなたの生成メソッドで混乱しています。あなたは本当に同じ参照を複数回割り当てたいだけですか?あなたはそれをボードにしたいですか?[x] [y] = "#";代わりに? –

答えて

2

アレイが正しく更新されています。あなたの印刷は間違っています。

最後の行、最後の列を印刷しています。私は適切にイテレータを使用するために失敗した

System.out.print(board[x][y]); 
+0

ああ、私はそれを得た。ありがとう。 –

+0

@DanWhite、この回答があなたを助けたら、それを受け入れるのをためらうことはありません(投票の下のV)。これは、この質問を回答としてマークします。 – AxelH

0

:として

System.out.print(board[row][column]); 

あなたは印刷するループカウンタを使用することができます:あなたのループ内xyが使用されていないか注意してください。

関連する問題