在下面的代码中,我想知道为什么会抛出异常:
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));
}
}
答案 0 :(得分: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";
答案 1 :(得分:0)
format()
需要格式化数字,而parse()
返回字符串中的数字。
double n = nf.parse(s);
nf.setMaximumFractionDigits(2);
System.out.println(nf.format(n));
会给你你期望的结果。