Java内置类是否会更新?DecimalFormat调用format方法报错原因咨询
问题解答
结论
这不是Java内置包更新导致的问题,java.text.DecimalFormat的单参数format重载从JDK 1.1版本问世以来就一直存在,从未被移除或修改参数要求,包含的单参数重载有:
format(double number):支持传入float(自动类型提升)、double类型数值format(long number):支持传入整数类型数值format(Object obj):支持传入Number子类对象
可能的问题原因及修复方案
原因1:代码存在语法错误,引发编译器误报
你提供的代码中,System.out.println(df.format(price); 这一行末尾缺少1个右括号),部分JDK编译器/IDE在遇到语法错误时,会出现方法签名匹配的误判。
修复后的对应行代码为:
System.out.println(df.format(price));
原因2:导入了非标准库的DecimalFormat类
检查你的项目代码:
- 有没有自定义命名为
DecimalFormat的类,覆盖了标准库类 - 导入语句有没有错误,是否导入了第三方库中同名的
DecimalFormat类,而非java.text.DecimalFormat
确认导入标准库类即可解决该问题。
修复后完整可运行代码
import java.text.DecimalFormat; import java.util.Scanner; public class Receipt { public static void main(String[] args) { float price = 0; Scanner scanner = new Scanner(System.in); DecimalFormat df = new DecimalFormat("0.00"); System.out.println("please enter a price"); price = scanner.nextFloat(); System.out.println(df.format(price)); } }
内容的提问来源于stack exchange,提问作者william_
相关产品推荐
相关产品推荐

