2017-11-06 1 views
0

나는 지뢰 찾기를 쓰고 있으며, the following method으로 고생하고 있습니다. 아래 코드를 볼 수도 있습니다. 나는 작은지도를 통과하고 새로운 배열을 넣었지만, 0 열과 0 행을 가져와 like in this example을 인쇄하는 방법에 대한 논리로 고민하고 있습니다. 아래 코드 중 일부를 볼 수 있습니다. 나는 그것을 실제로 기대했던 방식대로 작동시킬 수는 없지만. 내 지뢰 찾기 코드의 "라벨"인쇄 문제가 있습니다.

어떤 도움

/** 
 
* This prints out the map. This shows numbers of the columns 
 
* and rows on the top and left side, respectively. 
 
* map[0][0] is row 1, column 1 when shown to the user. 
 
* The first column, last column and every multiple of 5 are shown. 
 
* 
 
* To print out a 2 digit number with a leading space if the number 
 
* is less than 10, you may use: 
 
*  System.out.printf("%2d", 1); 
 
* 
 
* @param map The map to print out. 
 
*/ 
 
public static void printMap(char[][] map) { 
 
    char[][] mapWithNum = new char[map.length + 1][map[0].length + 1]; 
 
    for (int i = 1; i < mapWithNum.length; i++) { 
 
    for (int j = 1; j < mapWithNum[0].length; j++) { 
 
     mapWithNum[i][j] = map[i - 1][j - 1]; 
 
    } 
 
    } 
 
    for (int i = 0; i < mapWithNum.length; i++) { 
 
    for (int j = 0; j < mapWithNum[0].length; j++) { 
 
     if (i == 0 || j == 0) { 
 
     if (i == 0 && j == 0) { 
 
      System.out.print(" "); 
 
     } else if (j == 1 && i == 0) { 
 
      System.out.print(" " + j); 
 
     } else if ((j) % 5.0 == 0) { 
 
      System.out.print(" t1" + (j)); 
 
      if (j == map.length - 1 && i == 0) { 
 
      System.out.print(" t2" + (j + 1)); 
 
      } 
 
     } else { 
 
      System.out.print("--"); 
 
      if (j == map.length - 1 && i == 0) { 
 
      System.out.print(" t2" + (j + 1)); 
 
      } 
 
     } 
 

 

 
     } else { 
 
     System.out.print(" " + mapWithNum[i][j]); 
 
     } 
 
     /* \t if (j == 1) { 
 
     \t \t if (j % 5 == 0) { 
 
     \t \t \t System.out.print(" " + (i + 1)); 
 
     \t \t } 
 
     \t \t else { 
 
     \t \t \t System.out.print('-');*/ 
 
     //} 
 
     // \t } 
 
    } 
 
    System.out.println(); 
 
    } 
 

 
    return; 
 
}

주시면 감사하겠습니다.

답변

0

메서드에 새 2D 배열을 만들 필요가 없습니다. 원래 하나를 반복하면됩니다. printMap() 메소드가 수행해야 할 첫 번째 작업은 초기 헤더 행 인 " 1------ 5--------10"을 인쇄하는 것입니다. 동적으로 만들어야하는 경우에도 간단합니다. 그런 다음 2D 배열을 정상적으로 반복합니다. 각 행을 인쇄하기 전에 행 접두어를 인쇄하십시오. 예를 들어, 배열의 첫 번째 행에 대한 접두사는 " "입니다. 두 번째 행의 접두사는 " 1 "입니다. 등등. 행 0, 4, 9, ...에는 다른 경우가 있습니다. 다른 행의 접두사는 간단히 " | "입니다. printf()로 포맷하면 도움이 될 것입니다. 내부 루프를 시작하기 전에 접두어를 인쇄해야합니다. 또한 접두어로 개행 문자를 인쇄하지 마십시오. 접두사가 생략 된 곳에서 내부 루프를 계속 진행해야합니다. 마지막으로 내부 루프는 배열의 각 요소를 인쇄해야합니다. 그러나 인쇄 할 때 각 요소에 " "을 추가해야합니다. 먼저 점들을 인쇄하는 것이 좋습니다. 그런 다음 헤더 행과 마지막 행 접 두부를 추가하십시오.

+0

if 문을 통해 첫 번째 줄 ("1 ------ 5 -------- 10")을 동적으로 만들겠습니까? 첫 번째 열과 마지막 열뿐만 아니라 5의 배수도 인쇄해야합니다.이 역동적 인 부분은 내가 정말로 고심하고있는 곳입니다. –

+0

나는 첫 줄을있는 그대로 그대로 하드 코딩 할 것입니다. 루프 또는 IF 문은 필요 없습니다. 그러나 이것은 10이 최대 크기라고 가정합니다. 크기가 15, 20, ...으로 동적으로 커질 수 있다면 동적으로 만들어야합니다. –

+0

정말로 성장할 필요가있어 주셔서 감사합니다. 그러나 열 매개 변수에 대한 루프를 사용하여이를 해결할 수있었습니다. –

관련 문제