如何打印垂直对齐的文本

5
我希望在文件中打印以下格式的输出。
1 Introduction                                              1
 1.1 Scope                                                  1
 1.2 Relevance                                              1
   1.2.1 Advantages                                         1
     1.2.1.1 Economic                                       2
   1.2.2 Disadvantages                                      2
2 Analysis                                                  2

我无法使页面数字在同一行中垂直对齐。如何解决?

2
文件将以固定大小字体显示吗? - drawnonward
默认字体大小始终被使用。 - razor35
2个回答

11

你需要左对齐第一列,右对齐第二列。

下面是一个例子:

    String[] titles = {
        "1 Introduction",
        " 1.1 Scope",
        " 1.2 Relevance",
        "    1.2.1 Advantages",
        "      1.2.1.1 Economic",
        "    1.2.2 Disadvantages",
        "2 Analysis",
    };
    for (int i = 0; i < titles.length; i++) {
        System.out.println(String.format("%-30s %4d",
            titles[i],
            i * i * i // just example formula
        ));
    }

这会打印出(如ideone.com所示):

1 Introduction                    0
 1.1 Scope                        1
 1.2 Relevance                    8
    1.2.1 Advantages             27
      1.2.1.1 Economic           64
    1.2.2 Disadvantages         125
2 Analysis                      216

格式化字符串%-30s %4d使用宽度为30的左对齐(-标记)第一个参数,使用宽度为4的右对齐方式对第二个参数进行对齐。

API链接


6
通常情况下,使用强制最小宽度的字符串格式说明符:
someStream.write(String.format("%60s %3d", sectionName, pageNumber));

我已经尝试过这个。但它总是在60个空格后打印出页码。因此,行号无法垂直对齐。 - razor35

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接