如何格式化字符串输出 java

How to format string output java

我已经创建了一个基本的 table 并且正在尝试将 table 中的标记格式化为在标题下。这是我拥有的:

NAME TYPE LINE#
a prod 1

这就是我想要的:

NAME TYPE LINE#
a    prod 1

我知道 System.out.printf() 是格式化我的字符串的理想方式,但这不适用于我在主 class 中的代码。我创建了一个字符串数组,并使用我创建的 .toString 方法打印出来(产品 1)。这是我的代码:

for (int j = 0; j < numOfSym; j++) {
    System.out.println(symbols[j].toString());
}

这是我的符号 class:

public class Symbol {

    String type;
    String name;
    int lineNum;

    // toString method
    public String toString() {
        return name + " " + type + " " + Integer.toString(lineNum);
    }
}

String.format也不行。 printf() 会是最好的选择吗?任何帮助或 link 都会有所帮助。

喜欢?

System.out.println("NAME  TYPE  LINE# ");
String[][] data = {{"a", "prod", "1"}, {"b", "prod", "2"}};        

for (int i = 0; i < data.length; i++) {
    System.out.println(String.format("%-5s %-5s %-5s", data[i][0], data[i][1], data[i][2]));
}

或者如果您愿意(在您的 Symbol class 内):

@Override
public String toString() {
    return String.format("%-5s %-5s %-5s", type, name, lineNum);
}