
前投稿で解決した件で追加でのご質問ですが
例
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) Excel VBA ユーザーフォーム内のラベルにテキストボックスの小計を出す方法 5 2022/08/17 14:27
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- Excel(エクセル) 列を自動で追加したい 3 2022/07/11 12:58
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
Randomメソッドの確率設定
-
java キーボード入力された値の...
-
(急いでいます)Javaで3回間違...
-
javaのプログラム
-
総称型ArrayList<E>への参照...
-
論理演算子”||”またはの入力方法
-
Java 入力した整数値の合計を、...
-
7つ数字を表示したら改行すると...
-
Java 配列 勝敗、引き分け判定...
-
java txtファイルに書き出しの仕方
-
テキストボックスに入力された...
-
点数をだす時に、maxとminがお...
-
javaのエラーが回収できない
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
javaで入力した数字の順番を記...
-
*で正三角形を出力
-
【JAVA <identifier>がありま...
-
コマンドライン引数の例外処理...
-
JAVAのfor文で困っています。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
論理演算子”||”またはの入力方法
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
java キーボード入力された値の...
-
Randomメソッドの確率設定
-
テキストボックスに入力された...
-
countに実行した回数をいれたい...
-
総称型ArrayList<E>への参照...
-
javaプログラムについて
-
JAVAのfor文で困っています。
-
繰り返しによる星印の出力
-
Java 配列<選挙>
-
javaです。 途中まで出来ている...
-
数値⇒漢数字変換 java
-
Ctrl+Zが入力されると終了する...
-
java 入力 3 4 3 出力 ABC DEFG...
-
エラー(互換性の無い型)
-
Java 入力した整数値の合計を、...
-
【JAVA <identifier>がありま...
-
2つのスクロールバーを連動させ...
おすすめ情報