3

プロジェクトの場合、プリンターにいくつかの数字を印刷する必要があります。それらは、コンマに合わせて、互いに下に印刷する必要があります。フォントは等幅フォントではなく、等幅フォントにすることもできません。DecimalFormat( "0.000")を使用して、すべての数値を小数点以下3桁で終わる文字列に変換しています。

カンマの数字を互いに下に揃える正しい方法は何でしょうか?ここで説明されているように、私はJavaのPrintableインターフェイスを使用していますhttp://docs.oracle.com/javase/tutorial/2d/printing/index.html

ありがとう

編集:私はコンソールではなく、プリンター(実際の紙が出てくる実際のハードウェアのもの)に印刷しようとしています

4

2 に答える 2

1

これは確かに等幅フォントの方が見栄えがします。

コンマは小数点だと思います。これが私がすることです。

  • drawString を使用してコンマ画像を生成します。

  • 数値を 2 つの部分、小数点の前の数値、および小数点の後の数値に分割します。

  • drawString を使用して、小数点以下の数字の画像と小数点以下の数字を生成します。

  • すべての数字が画像に変換されたら、10 進数の画像の後の数字を調べて、幅が最も長いものを確認します。

  • これで、小数点以下の最長の数字とカンマの幅のピクセル数が得られました。

  • 次の順序でプリンター キャンバスに画像を描きながら、番号の画像をもう一度確認します。

    • 小数点以下の数字
    • コンマ
    • 小数点以下の数値
于 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 に答える