2013-10-26 4 views
-1

스도쿠 보드 용 데이터 구조를 만들려고하는데 우선 콘솔에 인쇄하고 싶습니다. 저는 스도쿠 게임에서 각 셀을 표현하기 위해 2 차원 배열을 사용하고 있습니다. 그리고 나는 그것을 인쇄하는 정말로 멍청한 문제를 가지고 있습니다.2 차원 배열을 어떻게 인쇄합니까?

public class Main { 

public static void main(String[] args) { 

    int[][] puzzleBoard = {}; 

    //Row 1 
    puzzleBoard[1][1] = 0; 
    puzzleBoard[2][1] = 0; 
    puzzleBoard[3][1] = 0; 
    puzzleBoard[4][1] = 0; 
    puzzleBoard[5][1] = 0; 
    puzzleBoard[6][1] = 0; 
    puzzleBoard[7][1] = 0; 
    puzzleBoard[8][1] = 0; 
    puzzleBoard[9][1] = 0; 

    //Row 2 
    puzzleBoard[1][2] = 0; 
    puzzleBoard[2][2] = 0; 
    puzzleBoard[3][2] = 0; 
    puzzleBoard[4][2] = 0; 
    puzzleBoard[5][2] = 0; 
    puzzleBoard[6][2] = 0; 
    puzzleBoard[7][2] = 0; 
    puzzleBoard[8][2] = 0; 
    puzzleBoard[9][2] = 0; 

    //Row 3 
    puzzleBoard[1][3] = 0; 
    puzzleBoard[2][3] = 0; 
    puzzleBoard[3][3] = 0; 
    puzzleBoard[4][3] = 0; 
    puzzleBoard[5][3] = 0; 
    puzzleBoard[6][3] = 0; 
    puzzleBoard[7][3] = 0; 
    puzzleBoard[8][3] = 0; 
    puzzleBoard[9][3] = 0; 

    //Row 4 
    puzzleBoard[1][4] = 0; 
    puzzleBoard[2][4] = 0; 
    puzzleBoard[3][4] = 0; 
    puzzleBoard[4][4] = 0; 
    puzzleBoard[5][4] = 0; 
    puzzleBoard[6][4] = 0; 
    puzzleBoard[7][4] = 0; 
    puzzleBoard[8][4] = 0; 
    puzzleBoard[9][4] = 0; 

    //Row 5 
    puzzleBoard[1][5] = 0; 
    puzzleBoard[2][5] = 0; 
    puzzleBoard[3][5] = 0; 
    puzzleBoard[4][5] = 0; 
    puzzleBoard[5][5] = 0; 
    puzzleBoard[6][5] = 0; 
    puzzleBoard[7][5] = 0; 
    puzzleBoard[8][5] = 0; 
    puzzleBoard[9][5] = 0; 

    //Row 6 
    puzzleBoard[1][6] = 0; 
    puzzleBoard[2][6] = 0; 
    puzzleBoard[3][6] = 0; 
    puzzleBoard[4][6] = 0; 
    puzzleBoard[5][6] = 0; 
    puzzleBoard[6][6] = 0; 
    puzzleBoard[7][6] = 0; 
    puzzleBoard[8][6] = 0; 
    puzzleBoard[9][6] = 0; 

    //Row 7 
    puzzleBoard[1][7] = 0; 
    puzzleBoard[2][7] = 0; 
    puzzleBoard[3][7] = 0; 
    puzzleBoard[4][7] = 0; 
    puzzleBoard[5][7] = 0; 
    puzzleBoard[6][7] = 0; 
    puzzleBoard[7][7] = 0; 
    puzzleBoard[8][7] = 0; 
    puzzleBoard[9][7] = 0; 

    //Row 8 
    puzzleBoard[1][8] = 0; 
    puzzleBoard[2][8] = 0; 
    puzzleBoard[3][8] = 0; 
    puzzleBoard[4][8] = 0; 
    puzzleBoard[5][8] = 0; 
    puzzleBoard[6][8] = 0; 
    puzzleBoard[7][8] = 0; 
    puzzleBoard[8][8] = 0; 
    puzzleBoard[9][8] = 0; 

    //Row 9 
    puzzleBoard[1][9] = 0; 
    puzzleBoard[2][9] = 0; 
    puzzleBoard[3][9] = 0; 
    puzzleBoard[4][9] = 0; 
    puzzleBoard[5][9] = 0; 
    puzzleBoard[6][9] = 0; 
    puzzleBoard[7][9] = 0; 
    puzzleBoard[8][9] = 0; 
    puzzleBoard[9][9] = 0; 

    int rows = 9; 
    int columns = 9; 

    int i, j; 

    for (i = 1; i < rows; i++){ 
     for(j = 1; j < columns; j++){ 
      System.out.print(puzzleBoard[i][j] + " "); 

     } 
     System.out.println(""); 
    } 
} 

}

답변

2

당신은 배열의 크기를 지정하지 않았습니다.

int[][] puzzleBoard = {};

int[][] puzzleBoard = new int[10][10];

만 0

그런 다음 배열은 0 기지 색인으로 충전하는 경우 라인으로 루프 또는 라인에 대한 귀하의 배열을 초기화 할 필요가 없습니다 있어야한다. 따라서 첫 번째 요소는 [0][0]이고 마지막 요소는 [9][9]입니다.

두 변수 rowscolumns을 삭제할 수도 있습니다.

마지막으로, 자바 배열에 대한 자세한 내용은 0

for (i = 0; i < puzzleBoard.length; i++){ 
     for(j = 0; j < puzzleBoard[i].length; j++){ 
      System.out.print(puzzleBoard[i][j] + " ");  
     } 
     System.out.println(""); 
    } 

에서 시작하는 루프 당신을 수정해야합니다, 나는 this을 읽어보실 것을 권장합니다.

2

for 루프를 사용하여 배열 요소를 초기화해야합니다!

Java 배열은 0부터 시작하므로 맨 위 셀은 puzzleboard[0][0]!입니다.

당신은 또한 당신의 배열의 크기를 지정해야합니다 - 당신은 2 차원 배열을 인쇄 할 java.util.Arrays.deepToString()를 사용해야합니다 int[][] puzzleBoard = new int[10][10];

+0

아, 그렇습니다. 그리고 다른 답변에서 말했듯이 for 루프를 0으로 초기화하십시오! –

0

:

는 지정된 배열의 「심층 내용」의 캐릭터 라인 표현을 돌려줍니다. 배열에 다른 배열이 요소로 포함되어있는 경우 문자열 표현에는 내용이 포함됩니다. 이 방법 은 다차원 배열을 문자열로 변환하도록 설계되었습니다.

문자열 표현은 배열 요소의 목록 인 대괄호 ("[]")로 묶인 으로 구성됩니다. 인접 요소는 문자 ","(쉼표 다음에 공백)로 구분됩니다. 배열이 인 경우를 제외하고는 이 String.valueOf (Object)에 따라 문자열로 변환됩니다.

관련 문제