1

これは単純に聞こえると思いますが、おそらく...ループ内にある main() 内のコードとしましょう:

System.out.println(num[i]+"\t     "+qty[i]+"\t     "+money.format(price[i])+"\t"+money.format(value[i])+"\t"+reorder[i]);

ここでキャプチャされた合計:

http://maradastudios.ucoz.com/school/Capture.png

お気づきかもしれませんが、問題なく動作します。ただし、出力中、#114 の行 (最後の行から 2 番目) の合計値は $90.00 です。これは正しいですが、Reorder Point 変数の間隔が不自然になります。簡単に言うと、この変数をフォーマットして、より大きな数字の対応する変数と同じ量のスペースを占めるようにすることはできますか?

4

2 に答える 2

5

何かのようなもの

String.format("%10.2f", yourFloat)
// or
System.out.format("%10.2f", yourFloat)

10 文字幅 (10 進数を含む) の文字列を出力し、小数点の後に 2 つの数字を表示します。

(ドキュメント)

そう

String.format("$%6.2f", value[i])

$.文字の両方を揃えます( を除くvalue[i] > 999.99)。


それ以外の:

System.out.println(
    num[i]                +"\t     "+
    qty[i]                +"\t     "+
    money.format(price[i])+"\t"+
    money.format(value[i])+"\t"+
    reorder[i]);

(これはまさにあなたが持っていたもので、わかりやすくするためにフォーマットし、スクロールバーを削除するだけです)

私はおそらく次のように書くでしょう:

System.out.format("%5d\t %5d\t $%5.2f\t $%6.2f\t %5d %n", 
    num[i], qty[i], price[i], value[i], reorder[i]);

priceこれは、およびvalue配列が float または doubleであることを前提としています。は標準クラスではないため、記号moneyを追加する以外に何をするかを正確に伝えるのは困難です。$


文字列形式の構文はドキュメントで定義されていますが、フロートの場合はおおよそ次のとおりです。

%X.Yf

は合計Xフィールド幅で、Yは小数点以下の桁数です

例えば

"123.40"  Has a total width of 6:  
          3 + 1 [decimal point] + 2 = 6)
"  2.34"  Also has a total width of 6:
          2 [spaces] + 1 + 1 [decimal point] + 2 = 6
于 2013-04-05T16:44:42.590 に答える
-1
Formatter formatter = new Formatter();
    System.out.println(formatter.format("%20s %20s %20s %20s %20s", "Title*", "Title*", "Title*", "Title*", "Title*"));

    for (int i = 0; i < 10; i++) {
        formatter = new Formatter();

        System.out.println(formatter.format("%20s %20s %20s %20s %20s", num[i],qty[i],money.format(price[i]),money.format(value[i]),reorder[i]));
    }
于 2013-04-05T16:49:58.057 に答える