Java抵押贷款计算器中NumberFormat格式化货币显示为问号问题
问题原因
NumberFormat.getCurrencyInstance()默认会读取JVM的系统默认区域设置(Locale)生成货币格式,当默认Locale不是美元对应区域、或控制台字符编码不匹配时,就会出现货币符号显示为?的异常情况。
解决方案
两步修改即可修复:
- 在代码导入区新增Locale类的引入:
import java.util.Locale;
- 将原代码中生成格式化货币字符串的行,修改为指定美国区域,强制使用美元货币格式:
String mortgageFormatted = NumberFormat.getCurrencyInstance(Locale.US).format(mortgage);
验证效果
修改后重新运行程序,输入相同测试参数,输出结果为:
Principal: 100000 Annual Interest Rate: 3.92 Period (Years): 30 Mortgage: $472.81
完全符合预期的美元格式要求。
内容的提问来源于stack exchange,提问作者lakhe_112
相关产品推荐
相关产品推荐

