这可能看起来像一个重复的问题,但我尝试在所有下面的链接,并不能得到正确的答案。使用DecimalFormat格式异常 - “无法格式化给定的对象作为数字”
Cannot format given Object as a Number ComboBox
但我没有收到什么是错。这里是我的代码
DecimalFormat twoDForm = new DecimalFormat("#.##");
double externalmark = 1.86;
double internalmark = 4.0;
System.out.println(String.valueOf((externalmark*3+internalmark*1)/4));
String val = String.valueOf((externalmark*3+internalmark*1)/4);
String wgpa1=twoDForm.format(val); // gives exception
String wgpa2=twoDForm.format((externalmark*3+internalmark*1)/4)); // works fine
System.out.println(wgpa1);
的format
方法将Object类型作为参数,所以这就是为什么我通过一个String对象,那个时候它给例外Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object as a Number
。
但是,当我给双值作为参数程序工作正常。但是,如果方法是用Object
类型参数定义的,为什么我在传递String
时遇到异常,而在传递double
时没有得到异常? PS:我们使用的是JDK 6.0。