-1

以下のコードでは、なぜ例外がスローされるのか疑問に思っています。

import java.text.*;
 class NumFormat
    {
      public static void main(String[] args)throws Exception{
      String s = "123.456xyz";
      NumberFormat nf = NumberFormat.getInstance();
      System.out.println(nf.parse(s));
      nf.setMaximumFractionDigits(2);
     System.out.println(nf.format(s));
    }
 }
4

2 に答える 2

1

代わりにこれをテストしようとしていると思います。文字列を format() メソッドに渡すことはできません。数値が必要です。

try {
    String s = "123.456xyz";
    NumberFormat nf = NumberFormat.getInstance();
    Number n = nf.parse(s);
    System.out.println(n);
    nf.setMaximumFractionDigits(2);
    System.out.println(nf.format(n));

}
catch (ParseException e) {
    e.printStackTrace();
}

数値フォーマッタが入力の解析に失敗すると、例外がスローされます。最初の行を次のように変更した場合のように:

String s = "%123.456xyz";
于 2012-07-24T16:43:25.100 に答える
0

format()フォーマットする数値を期待しますが、asparse()は文字列から数値を返します。

double n = nf.parse(s);
nf.setMaximumFractionDigits(2);
System.out.println(nf.format(n));

あなたが期待していた結果が得られます。

参照:

format()ドキュメント

parse()ドキュメント

于 2012-07-24T16:40:16.717 に答える