我正在尝试打印单词和单词计数的两列输出。我似乎在格式化方面有问题。这是我的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);
}
}
再次查看我的输出后,看来我的问题是第二列紧随第一列中单词的长度。有没有一种方法可以设置输出的宽度,以使计数不取决于单词的结尾?
最佳答案
您可能还缺少尾随的“%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]);
}
输出为:
苹果123
4567
显然,如果要插入第一列的单词的宽度大于20个字符,则会将第二列推入那么多个字符。