2017-12-24 17 views
-3

나는 박하 사탕 발가락 게임을 만들고 있습니다.x 및 루프 용 게임 자바

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(); 

    } 

} 
: 클래스를 실행하는 테스트 코드의 사용

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"를두고 있습니다 : 여기 몇 가지 방법을 구현하는 클래스가하면 코드

이것은 내가 코드가 다음 "O"로 전환 "X"로 시작 교대로 얻을 수있는 방법

O null null 
null O O 
null null null 

을 어떻게 표시 되는가?

+4

Make turn 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으로 변경하는 것이 좋습니다.

부수적으로 디스플레이 문제와 관련하여 ... board 변수에 초기 값을 지정하지 않고 선언하고 있습니다 (가독성 문제로 -을 포함하는 문자열). 인쇄 할 때 null을 보는 이유입니다. 그래서 당신은 여기에 두 가지 선택이 ... 첫 번째는 할당되는 기본값 :

두 번째는 당신의 display 방법으로 추가 검사를 수행하는
String[][] board = new String [][] 
{ 
    { "-", "-", "-" }, 
    { "-", "-", "-" }, 
    { "-", "-", "-" } 
}; 

: 당신이, 선택하든

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 
- - -