2014-02-27 5 views
1

Tic tac 발가락 모의 게임에 문제가 있습니다. 연주 보드를 나타 내기 위해 2 차원 배열을 사용하고 있으며 다음과 같이 인스턴스화했습니다. char 형 배열을 사용해야합니다. 나는 각 인덱스가 null이라는 것을 지정할 필요가 없다는 것을 알았습니다. char의 디폴트였습니다. 그러나 나는 그것을 시도 할 것이라고 생각했습니다. 인덱스가 서로 null가 아닌 (기본값)에 동일한 경우 내 배열의 초기 값을 ''사용 시도하지만 문자 배열 인덱스가 허용되지 않습니다.

public TicTacToe2D() 
{ 
    board = new char[3][3]; 

    for(int i = 0; i < board.length; i++) 
    { 
     for(int j = 0; j < board[i].length; j++) 
     { 
      board[j] = null; 
     } 

     board[i] = null; 
    }   
} 

여기에 내가보고, 승리 조건을 검사하고있다. 이 경우 나는 오류가 발생했습니다 : "호환되지 않는 유형 : 숯불 []는 char로 변환 할 수 없습니다" "문자와 비교할 수없는 유형" 어떤 도움 것 인덱스가 나는 오류가 null의 경우
public char isWin() 
{ 
    //Check for row wins 
    if (board[0][0] == board[0][1] && board[0][1] == board[0][2] && board[0][0] != null) 
     return true; 

    if (board[1][0]==board[1][1] && board[1][1]==board[1][2] && board[1][0] != null) 
     return true; 

    if (board[2][0]==board[2][1] && board[2][1]==board[2][2] && board[2][0] != null) 
     return true; 

    //Check for column wins 
    if (board[0][0]==board[1][0] && board[1][0]==board[2][0] && board[0][0] != null) 
     return true; 

    if (board[0][1]==board[1][1] && board[1][1]==board[2][1] && board[0][1] != null) 
     return true; 

    if (board[0][2]==board[1][2] && board[1][2]==board[2][2] && board[0][2] != null) 
     return true; 

    //Check for diagonal wins 
    if (board[0][0]==board[1][1] && board[1][1]==board[2][2] && board[0][0] != null) 
     return true; 

    if (board[2][0] == board[1][1] && board[1][1] == board[0][2] && board[2][0] != 0) 
     return true; 
    else return false; 
} 

검사 할 때 크게 감사드립니다!

+0

Char는 기본 유형이므로 null 일 수 없으며 기본값은 0입니다. 기본값은 0입니다. –

+0

여기에서 수행 할 작업 또한 'board [j] = null;'은 각 " 배열의 "행"을 null로 설정하십시오. –

답변

1

데이터 유형 char은 원시이므로 null 일 수 없습니다. 그러나 기본값은 null , \0 (또는 \u0000)입니다. JLS Section 4.12.5는 기본값을 제공합니다

  • For type char, the default value is the null character, that is, '\u0000'.

시도가 \0 또는 \u0000 대신 null과 비교.

+0

감사합니다! null 문자와 비교하면 문제가 해결되었습니다. – user3362160

0

char는 객체가 아니므로 기본 유형입니다.

즉, char은 정수 또는 부동 소수점 또는 부울과 같으며 고정 길이이며 초기 값은 , 0은 (또는 false)입니다.

나는 숯이 8 비트임을 기억하지만 잘못된 것일 수 있습니다. 당신이 문자 (예 : 'a') 또는 실제 숫자 (예 : 0 또는 1)와 비교할 수있는 문자입니다.

0

boardchar[][]으로 표시됩니다. 따라서 char 배열의 배열입니다. 따라서 board[i]은 문자 배열 (보드의 행)입니다. board[i][j]은 char (보드의 셀 값)입니다.

이러한 2D 배열의 각 셀의 기본값은 0입니다. 원시 형은 null는 될 수 없습니다.

관련 문제