当我使用方法printf使用java将值写入文本文件时,我遇到了一个奇怪的问题,结果非常糟糕,我查阅了一些java文档,它建议我使用格式化
("%-20s %-20s %-20s %-20s %-20s %-20s%n",
结果真的不太好
for (int i=0 ; i<array.length ; i++)
{
texfile.printf("%-20s %-20s %-20s %-20s %-20s %-20s%n", array[i].getName().getName(), array[i].getTittle() , array[i].getCodeISBN() , array[i].getDate() ,array[i].getPrice() , array[i].getNum() );
book++;
}
我做错了什么?
答案 0 :(得分:2)
看起来getName().getName()
或getTittle()
中的一个返回长度大于20的String
。超出指定宽度的字符不会被java.io.PrintStream.printf()
修剪。从java.util.Formatter
Javadoc:“宽度是要写入输出的最小字符数。”
答案 1 :(得分:1)
您可以使用String中的trim()
方法删除空格。尝试用下面的方法做。我假设你的getters return Strings
。
texfile.printf("%-20s %-20s %-20s %-20s %-20s %-20s%n", array[i].getName().getName().trim(), array[i].getTittle().trim() , array[i].getCodeISBN().trim() , array[i].getDate().trim() ,array[i].getPrice().trim() , array[i].getNum().trim() );