2013-11-09 2 views
0

그래서 크기가 N x N, 가변 크기의 보드 개체 표현을 인쇄하는 toString 메서드를 작성하려고 N = 6 예를 들어 표현은 다음과 같습니다. 이 :가변 크기의 뭔가를 포맷하는 Java Java 형식

=== 
    2r -- 2r 2r -- 2b 
    -- -- 2r -- 3r -- 
    2r 3r 2r 3r -- 2b 
    3r 1r 3r 2r 2r 2b 
    2b 4r 3r 1r 3r 2b 
    2b 2b 3b 2r 3b 1b 
=== 

이 보드의 모든 "Square"는 Square []에 저장됩니다. 내 질문은이 보드의 크기가 다양하기 때문에 Formatter.format에서 사용할 형식 문자열을 어떻게 작성합니까?

이것은 내가 지금까지 주어진 사각형이 무엇을 내 광장 [] :

/** Returns my dumped representation. */ 
@Override 
public String toString() { 
    Formatter out = new Formatter(); 
    String format = "Something here"; 
    out.format(format, squares); 
    return out.toString(); 
} 

내가 스퀘어 광장, 루프에 대한 몇 가지를 사용하려고하고 라인으로 라인을 그것을 밖으로 인쇄 생각하고 있었는데, 그러나 나는이 일을하는 더 깨끗한 방법을 원하고 있습니다.

답변

0

내가 대신 FormatterStringBuilder를 사용하려고합니다 :

final StringBuilder sb = new StringBuilder(); 
final int n = (int) Math.sqrt(squares.length); 
for (int row = 0; row < n; row++) { 
    for (int col = 0; col < n; col++) { 
     final int offset = row * n + col; 
     final Square square = squares[offset]; 
     sb.append(square.toString()) 

     final boolean lastCol = col == (n - 1); 
     sb.append(lastCol ? "\n" : " "); 
    } 
} 
return sb.toString();