2017-12-24 44 views
-3

私はチックタックつま先ゲームを作っています。xとoゲーム用Java for loop

package test; 

public class test { 

    private String[][] board = new String[3][3]; 

    public test() { 

    } 

    public void move(int x, int y) { 
     String turn = "X"; 
     if (turn.equals("X")) { 
      turn = "O"; 
     }else { 
      turn = "X"; 
     } 

     board[x][y] = turn; 
    } 

    public void display() { 
     for(int i = 0; i < 3; i++) { 
      for(int j = 0; j < 3; j++) { 
       System.out.print(board[i][j] + " "); 
      } 
      System.out.println(); 
     } 
    } 

} 

私の問題は、以下の配列位置に「O」を置き、常にコードでテストコードを使用すると、クラスを実行することです:私は、コードはここにいくつかのメソッドを実装するクラスをされてい

package test; 

public class RunTest { 

    public static void main(String[] args) { 
     test game = new test(); 

     game.move(1, 2); 
     game.move(1, 1); 
     game.move(0, 0); 
     game.display(); 

    } 

} 

これは、私はコードが、その後"O"に切り替える"X"で始まる交互に取得できますか

O null null 
null O O 
null null null 

をどのように表示されていますか?

+4

メイクストリングturn = "X";メンバー変数 – Zachary

+1

'turn =" X "'を初期化したため、 'turn.equals(" X ")'は常に 'true'です。 – ThomasEdwin

答えて

3
public class test 
{ 
    private String[][] board = new String[3][3]; 
    private String turn = "X"; 

    public test() { 

    } 

    public void move(int x, int y) { 
     board[x][y] = turn; 

     if (turn.equals("X")) { 
      turn = "O"; 
     }else { 
      turn = "X"; 
     } 
    } 

    public void display() { 
     for(int i = 0; i < 3; i++) { 
      for(int j = 0; j < 3; j++) { 
       System.out.print(board[i][j] + " "); 
      } 
      System.out.println(); 
     } 
    } 
} 

問題は、クラスメンバーの代わりにローカル変数turnを使用したことでした。メソッドが呼び出されるたびに、turnXに設定され、等しい値は常にtrueでした。また、ボードが新しい移動で更新された後で、あなたのturnメンバーの値を変更することをお勧めします。

表示に関する問題については... という変数を初期値(文字列は-と読みやすくするため)を割り当てずに宣言しています。このため、印刷時にnullと表示されます。ですから、ここでは2つの選択肢があり...最初のものは、デフォルト値を代入されます。

String[][] board = new String [][] 
{ 
    { "-", "-", "-" }, 
    { "-", "-", "-" }, 
    { "-", "-", "-" } 
}; 

秒1があなたのdisplayメソッドで追加チェックを実行している:

あなたが選ぶものは何でも
public void display() 
{ 
    for(int i = 0; i < 3; i++) 
    { 
     for(int j = 0; j < 3; j++) 
     { 
      String tile = board[i][j]; 

      if (tile == null) 
       System.out.print("- "); 
      else 
       System.out.print(tile + " "); 
     } 

     System.out.println(); 
    } 
} 

、あなたにこれは印刷されます:

X - - 
- O X 
- - -