对于项目,我需要将一些数字打印到打印机。它们需要在彼此下面打印,在逗号上对齐。字体不是也不能是等宽字体。我正在使用DecimalFormat(“0.000”)将所有数字转换为以正好3位小数结尾的字符串。
将逗号上的数字对齐的正确方法是什么?我正在使用Java的Printable接口,如http://docs.oracle.com/javase/tutorial/2d/printing/index.html所述。
由于
编辑:我不是要打印到控制台,而是打印到打印机(实际纸张出来的实际硬件)
答案 0 :(得分:1)
使用等宽字体肯定会更好看。
我假设逗号是小数点。这就是我要做的事。
使用drawString生成逗号图像。
将数字分成两部分,小数点前的数字和小数点后的数字。
使用drawString生成小数点前的数字图像和小数点后的数字。
将所有数字转换为图像后,请仔细检查小数点后的数字,看看哪个数字的宽度最长。
现在,您可以获得小数点后最长数字和逗号的宽度像素数。
再次浏览数字图像,按照以下顺序在打印机画布上绘制图像。
答案 1 :(得分:0)
只需将它们转换为对齐的字符串,然后打印这些字符串:
public static String align (String str)
{
int n = str.indexOf('.');
StringBuilder sb = new StringBuilder ();
for (int i = n; i < 3; i++)
sb.append ((char)0x2007); // Append FIGURE-SPACE character
sb.append (str);
return sb.toString ();
}
public static void main(String[] args) {
Random r = new Random ();
DecimalFormat format = new DecimalFormat("0.000");
for (int i = 0; i < 10; i++)
{
String str = format.format(Math.pow (r.nextDouble(), 3.0) * 150.0);
System.out.println(align (str));
}
}