我需要使用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
答案 0 :(得分:0)
使用String.format()
创建格式化的行。
For more information.
对所有字段使用相同的标记宽度,大于最大标记大小,并且它将排成一行。
答案 1 :(得分: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