2
public class Test {
    public static void main(String[] args) {
        final String test1 = new String("01,");
        final String test2 = new String("01,0");
        final String test3 = new String("1,00");

        String pattern = "##,##";
        DecimalFormat formatter;
        DecimalFormatSymbols dfs = new DecimalFormatSymbols();
        dfs.setGroupingSeparator(',');

        formatter = new DecimalFormat(pattern, dfs);
        String result1 = formatter.format(test1);
        String result2 = formatter.format(test2);
        String result3 = formatter.format(test3);

        System.out.println("Result 1 == " + result1);
        System.out.println("Result 2 == " + result2);
        System.out.println("Result 3 == " + result3);
    }
}

文字列をフォーマットしようとしています。フォーマットに使用しているコードを追加しました。例外が発生しています。

これらすべての結果を01,00にします。

例外 -

Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object as a Number
    at java.text.DecimalFormat.format(DecimalFormat.java:487)
    at java.text.Format.format(Format.java:140)
    at com.test.Test.main(Test.java:21)

誰かアイデアがあれば教えてください。

4

4 に答える 4

5

DecimalFormat.formatDateまたはNumberオブジェクトのみを受け入れ、 String!は受け入れません。

編集-1:

1)String pattern = "00.00"

2)

        String result1 = formatter.format(formatter.parse(test1));
        String result2 = formatter.format(formatter.parse(test2));
        String result3 = formatter.format(formatter.parse(test3));

例:

    final String test1 = new String("01,");
    final String test2 = new String("02,3");
    final String test3 = new String("1,00");

それは私に与えます:

Result 1 == 01,00
Result 2 == 02,30
Result 3 == 01,00
于 2013-01-09T09:25:12.693 に答える
0

このように使用する必要があります。

format = new DecimalFormat(".00");
format.format(10.0);
于 2013-01-09T09:28:56.857 に答える
0
String s = (String.format("%,d", 1000000)).replace(',', ' ');
于 2013-01-09T09:30:19.343 に答える