1

我需要系统输出 println 来执行此格式,以便第一列和第二列之间的空格数根据内容而变化。所以第二列总是对齐的。

有什么方法可以将第二列设置为从固定位置开始?

token: accept                        lexical unit: ACCEPT_KEYWORD
token: a                             lexical unit: IDENTIFIER
token .\’n’                          lexical unit: END_OF_INSTRUCTION
token: perform                       lexical unit: PERFORM_KEYWORD
token: find                          lexical unit: IDENTIFIER
token: until                         lexical unit: UNTIL_KEYWORD
token: b                             lexical unit: IDENTIFIER
token: =                             lexical unit: EQUALS_SIGN
token: 0                             lexical unit: INTEGER
token .\n                            lexical unit: END_OF_INSTRUCTION
4

2 回答 2

0

用于String.format()创建格式化的行。 了解更多信息。

对所有字段使用相同的标记宽度,大于最大标记大小,并且它将对齐。

于 2013-10-15T20:48:22.410 回答
0

在这里你有哥们:

    public class Test {

        public static class Logger {

            private static final int MAX_WHITESPACES = 20;

            public static void s(String token, String lex) {
                String whitespaces = new String(new char[Math.abs(token.length()-MAX_WHITESPACES)]).replace('\0', ' ');;
                String line = String.format("token: %s"+whitespaces+"lexical unit: %s", token, lex);
                System.out.println(line);
            }

        }

        public static void main(String[] args) {
            Logger.s("accept","ACCEPT_KEYWORD");
            Logger.s("a","IDENTIFIER");
            Logger.s(".\\’n’","END_OF_INSTRUCTION");
            Logger.s("perform","PERFORM_KEYWORD");
        }


    }

请注意,您的所有令牌都必须 < MAX_WHITESPACES

于 2013-10-15T22:53:47.560 回答