-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));

会给你你期望的结果。

参考:

格式()文档

parse() 文档

于 2012-07-24T16:40:16.717 回答