3

对于一个项目,我需要在打印机上打印一些数字。它们需要打印在彼此下方,并以逗号对齐。字体不是也不能是等宽字体。我正在使用 DecimalFormat("0.000") 将所有数字转换为以 3 位小数结尾的字符串。

将逗号上的数字对齐在彼此下方的正确方法是什么?我正在使用 Java 的 Printable 接口,如此处所述http://docs.oracle.com/javase/tutorial/2d/printing/index.html

谢谢

编辑:我不是想打印到控制台,而是打印到打印机(真正的纸张出来的实际硬件)

4

2 回答 2

1

使用等宽字体肯定会更好看。

我假设逗号是小数点。这就是我要做的。

  • 使用 drawString 生成逗号图像。

  • 将数字分成两部分,小数点前的数字和小数点后的数字。

  • 使用drawString生成小数点前的数字图像和小数点后的数字。

  • 将所有数字转换为图像后,查看小数点后的数字,看看哪一个的宽度最长。

  • 您现在有了小数点后最长数字的宽度像素数和逗号。

  • 再次浏览数字图像,按以下顺序在打印机画布上绘制图像。

    • 小数点后的数字
    • 逗号
    • 小数点前的数字
于 2013-02-12T14:27:44.177 回答
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));
    }
}
于 2013-02-12T14:10:29.237 回答