0

我有这个

public String toString()
{
    String s = "";
    for (int r = 0; r != 7 ; r++)
    {
        for (int c = 0; c != 7 ; c++) 
        {
            s += String.format("%02d " ,board[r][c]);
        }
    }
    return s;
}

我需要它像这样返回

01 04 39 20 53 06 37 22
40 19 02 05 38 21 52 07 07
03 46 61 00 57 54 23 36
18 41 56 49 60 00 08 51
47 14 45 55 55 50 35 50 35 24 42 24
42 17 48 27 48 27 48 27 48 27 48 27 00 59 32 09 32 09 32 09
13 13 28 28 15 44 11 30 25 34
16 43 12 29 26 33 10 31

我怎样才能做到这一点?

4

2 回答 2

3

你添加一个空格,但从来没有一个新的行 char

public String toString()
{
    String s = "";
    for (int r = 0; r != 7 ; r++)
    {
        for (int c = 0; c != 7 ; c++) 
        {
           s += String.format("%02d " ,board[r][c]);
        }
        s += String.format("%n");
    }
        return s;
}

%n 是平台无关的换行符

于 2013-09-03T23:28:58.723 回答
1

小提示:使用StringBuilderString在循环中重复附加到s 会使每个体面的程序员畏缩。

private static final String NEW_LINE = System.getProperty("line.separator");

public String toString()
{
    StringBuilder s = new StringBuilder();

    for (int r = 0; r != 7 ; r++)
    {
         for (int c = 0; c != 7 ; c++) 
         {
               s.append( String.format("%02d ", board[r][c] );
         }

         // On each outer-loop iteration, add a platform 
         // independent line separator (e.g. on Linux, it's "\n")
         s.append( NEW_LINE );
    }

    return s.toString();
}

编辑:根据@Diego C Nascimento 的建议,新的行分隔符应该是一个类常量。

于 2013-09-03T23:26:30.323 回答