
前投稿で解決した件で追加でのご質問ですが
例
9桁の数値文字列→カンマと*を含んだ11桁の文字列
000000000 → **********0
000000999 → ********999
123456789 → 123,456,789
と実行結果を求めたいときに下記ソースで解決しました。
int value = Integer.valueOf(九桁金額1).intValue();
NumberFormat nf = new DecimalFormat("###,###,##0");
String formatted = nf.format(value);
//***,***,***形式Ver
System.out.print("***,***,*** ".substring(formatted.length()) + formatted +"|");
}
こちらに
int value = Integer.valueOf(九桁金額2).intValue();
と別の金額項目を加えたいときに
IF分で何々の時は九桁金額1
何々の時は九桁金額2と条件判定した場合
System.out.printの結果は
int value = Integer.valueOf(九桁金額1).intValue();で
int型から読み込んだ文字列は
DecimalFormatの値に依存しているため
条件が増えるたびに
System.out.print結果を変更しなければなりません。
九桁金額1と九桁金額2のSystem.out.print結果を
その都度変更せずに
判定させる方法はありますでしょうか?
どうぞよろしくお願いいたします。
No.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 …
>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));}
}
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
No.2
- 回答日時:
String 九桁フォーマット(int v)
みたいな変換メソッドにするとか
int value;
if (...)value=金額1;
if (...)value=金額2:
みたいに値だけ変えるとか
ってことでしょうか
System.out.printの結果、とか、DecimalFormatの値に依存、とか、よくわからないのですが
この回答への補足
提案どうもありがとうございます。
>String 九桁フォーマット(int v)
>みたいな変換メソッドにするとか
そうですね。
金額変換メソッドにして
他の各メソッドで金額変換作業を複数するとき、
変換メソッドから
呼び出せないかと思いまして。
説明が伝わりにくく申し訳ございません。
すこし考えてみます。
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形式);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
Java 入力した整数値の合計を、...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
java キーボード入力された値の...
-
数値⇒漢数字変換 java
-
C言語のポインターに関する警告
-
System.err. printlnとSystem.o...
-
JavaScriptの変数をjavaのメソ...
-
ORA-01858: 数値を指定する箇所...
-
VBAで配列の計算
-
javaで質問です。 文字列2023/2...
-
JScrollPaneで、表示がおかしく...
-
JavaScriptを使ってロト6の当...
-
streamで送信されたArrayListを...
-
JavaScriptとVBScriptに関して
-
IF関数でEmpty値を設定する方法。
-
動的配列が存在(要素が有る)か...
-
オブジェクトの中のプロパティ...
-
1~100までの数字を表示したい
-
matchesを否定文として使う方法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
論理演算子”||”またはの入力方法
-
java キーボード入力された値の...
-
テキストボックスに入力された...
-
総称型ArrayList<E>への参照...
-
16進数数字を結合して、10進数...
-
JAVAのfor文で困っています。
-
数値⇒漢数字変換 java
-
Java 配列<選挙>
-
Java キーボードから負の数が入...
-
Java 入力した整数値の合計を、...
-
C#の質問
-
2つのスクロールバーを連動させ...
-
java 拡張for map
-
java 配列
-
Javaの問題について
-
Javaの問題について
-
Java 4択問題の連続する2問の正...
-
javaについて質問です。
おすすめ情報