- ベストアンサー
九桁の金額形式変換の方法を判定させる方法
- 九桁の金額をカンマと*を含んだ11桁の形式に変換する方法を教えてください
- 九桁の金額を変換する際に条件判定を行い、異なる結果を返す方法はありますか
- 九桁の金額形式変換を柔軟に行う方法について教えてください
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
要は、複数の値(金額)を同じ形式で表示したいが値ごとにフォーマットルーチンを書くのは非効率なので何とかしたい、ということですよね? No.2さんも言っているように、引数に String 一つを取るフォーマット用メソッドを作れば良いのでは? 例) ------------------------------------------ public static void main(String[] args) { // ・・・ System.out.println(delimitCommaAndFillWithAster("000000000")); System.out.println(delimitCommaAndFillWithAster("000000999")); System.out.println(delimitCommaAndFillWithAster("123456789")); // ・・・ String amount; if (条件判定) { amount = "000000999"; } else { amount = "001234567"; } String formatted = delimitCommaAndFillWithAster(amount); System.out.println(formatted); // ・・・ } // ・・・ private static String delimitCommaAndFillWithAster(String value) { int intValue = Integer.parseInt(value); String commaDelimited = new DecimalFormat("###,###,##0").format(intValue); return "***,***,***".substring(commaDelimited.length()) + commaDelimited; } ---------------------------------------------- なお、new DecimalFormat("###,###,##0") は定数にしたくなるかも知れませんが java.text.Format 系のクラスはスレッドセーフではないので一回一回インスタンスを生成した方が無難です。 http://java.sun.com/javase/ja/6/docs/ja/api/java/text/Format.html
その他の回答 (2)
- kmee
- ベストアンサー率55% (1857/3366)
String 九桁フォーマット(int v) みたいな変換メソッドにするとか int value; if (...)value=金額1; if (...)value=金額2: みたいに値だけ変えるとか ってことでしょうか System.out.printの結果、とか、DecimalFormatの値に依存、とか、よくわからないのですが
お礼
String 九桁金額フォーマット(int v) int value1 = Integer.valueOf(金額1).intValue(); int value2 = Integer.valueOf(金額2).intValue(); int value3 = Integer.valueOf(金額3).intValue(); NumberFormat nf1 = new DecimalFormat("###,###,##0"); NumberFormat nf2 = new DecimalFormat("###,###,##0"); NumberFormat nf3 = new DecimalFormat("###,###,##0"); String 金額1Z形式 = nf1.format(value1); String 金額2Z形式 = nf2.format(value2); String 金額3Z形式 = nf3.format(value3); のような金額メソッドがあるとします。 このメソッドを 下記のような 別のメソッドへ呼び出せると作業効率が上がるなと思っているのですが アドバイス等ありましたらどうぞよろしくお願い致します。 private void 各種金額編集(?????????????????....................) if (???=0) { System.out.print ("***********".substring(金額1Z形式.length()) + 金額1Z形式); } else { System.out.print("***********".substring(金額2Z形式.length()) + 金額2Z形式);
補足
提案どうもありがとうございます。 >String 九桁フォーマット(int v) >みたいな変換メソッドにするとか そうですね。 金額変換メソッドにして 他の各メソッドで金額変換作業を複数するとき、 変換メソッドから 呼び出せないかと思いまして。 説明が伝わりにくく申し訳ございません。 すこし考えてみます。
- Tacosan
- ベストアンサー率23% (3656/15482)
何をしたいのかわかりません.
お礼
>No.2さんも言っているように、引数に String 一つを取るフォーマット用メソッドを作れば良いのでは? そうです。 フォーマット用メソッドを作りたかったのです。 ご提示いただいたサンプルを そのまま使用させて頂いた形になりましたが これで今後違うメソッドから金額フォーマット用プログラムを呼び出せるようになりましたので 作業効率UPと、ソースをすっきりまとめられそうです。 下記のようにして //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ //金額ルーチン ***,***,**9形式Ver //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ private static String delimitCommaAndFillWithAster(String value) { int intValue = Integer.parseInt(value); String commaDelimited = new DecimalFormat("###,###,##0").format(intValue); //***,***,**9形式Ver return "***,***,***".substring(commaDelimited.length()) + commaDelimited; } //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 各メソッドに指示する事が出来ました。 今後は他のプログラムもこの方法で 無駄なソースを省ければと思ってます。 本当にどうもありがとうございました。 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ private void 各種金額編集(String 九桁金額1, String 九桁金額2, .....................................................) f (九桁金額2.compareTo ("000000000") == 0) { System.out.println(delimitCommaAndFillWithAster(九桁金額1)); } else { System.out.println(delimitCommaAndFillWithAster(九桁金額2));} } //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@