我正在尝试打印单词和字数的两列输出。我似乎遇到格式问题。以下是printf
的代码行:
public void inOrderTraverseTree(Node focusNode){
if(focusNode != null){
inOrderTraverseTree(focusNode.lChild);
//focusNode.visit();
System.out.printf("%-15s %15d", focusNode.key, focusNode.count);
inOrderTraverseTree(focusNode.rChild);
}
}
再次查看我的输出后,似乎我的问题是第二列跟随第一列中单词的长度。有没有办法为输出设置宽度,以便计数不依赖于单词的结尾?
答案 0 :(得分:2)
试试这个。
System.out.printf("%20s%15d", "123451234512345", 10000);
同样在你的代码中,这个string2实际上需要是int,而不是string。
答案 1 :(得分:1)
您可能还缺少一个尾随的“%n”(回车)并且让第二行的第一个元素进入第一行的第二个元素(假设这是在循环中调用的)。
System.out.printf("%-20s %-15d%n", string1, string2);
否则,就像另一个答案所指出的那样,第二个元素应该是一个整数,而不是一个字符串(至少基于你的格式)。
以下是一个例子:
String[] text = new String[] { "apple", "the" };
int[] data = new int[] { 123, 4567 };
for (int i = 0; i < text.length; i++) {
System.out.printf("%-20s %-15d%n", text[i], data[i]);
}
输出结果为:
apple 123 the 4567
显然,如果你想要插入第一列的单词超过20个字符,它会将第二列推到那么多字符上。
答案 2 :(得分:0)
实际上,只要您提供一个数字作为第二个参数,模式“%-20s%-15d”就可以了。我想知道你是如何得到这个输出的,因为为“%-15d”提供一个字符串会产生运行时错误。