我正在打印三列字符串。如何组织输出,第一列字符串大小完全随机,并且不会扭曲列之间的距离?
我不知道很多java类方法。我对java以及软件开发都很新。
SOURCE:
//just printing out the data with the string I built "String p"
//don't mind dividing them into three strings
while (true) {
tok = lex.nextToken();
String p = TokenType.tokens.get(tok.getKind()) +
" left: " + tok.getLeftPosition() +
" right: " + tok.getRightPosition() + " ";
if ( (tok.getKind() == Tokens.Identifier) ||
(tok.getKind() == Tokens.INTeger) ||
(tok.getKind() == Tokens.FLoat) )
p += tok.toString();
System.out.println(p + " line:"+lex.source.getLineno() );
}
以下是提供一些想法的示例输出。
我至少想要第二列对齐。
输出:
READLINE: program if == float f
program left: 0 right: 6 line:1
if left: 8 right: 9 line:1
== left: 11 right: 12 line:1
float left: 14 right: 18 line:1
<id> left: 20 right: 20 f line:1
答案 0 :(得分:1)
使用printf()
或String.format()
或基础Formatter
:
System.out.printf("%-10s left: %-2d right: %-2d %-3s line: %d%n",
TokenType.tokens.get(tok.getKind()),
tok.getLeftPosition(),
tok.getRightPosition(),
(tok.getKind() == Tokens.Identifier ||
tok.getKind() == Tokens.INTeger ||
tok.getKind() == Tokens.FLoat ? tok.toString() : ""),
lex.source.getLineno());
删除-
符号右对齐。