Java新手求助:如何用三个参数实现字符串格式化?
Java数值格式化问题修正
你的代码存在两处错误,导致无法生成预期的格式化字符串,以下是修正方案:
1. 格式化字符串拼接错误
你当前的格式字符串拼接逻辑会生成无效的格式指令,比如当width=6、places=1时,会得到%6.f1,这不符合String.format的语法要求。正确的格式应该是%[宽度].[小数位数]f,需要把小数位数放在.f的前面。
修正后的format方法:
/** * 创建给定double值的字符串表示形式。 * @param value 待格式化的double值 * @param places 小数点后的位数 * @param width 输出字符串的长度,值将在输出字符串中右对齐 * @return str 格式化后的字符串 */ public static String format(double value, int places, int width) { // 正确拼接格式字符串:%[宽度].[小数位数]f String str = String.format("%" + width + "." + places + "f", value); return str; }
2. 方法调用的参数写法错误
Java不支持places: 1这种命名参数的写法,必须按照方法定义的参数顺序直接传递数值。
修正后的调用代码:
// 打印数值 System.out.println(dbl.format(a, 1, 6) + dbl.format(b, 3, 12));
效果示例
假设a=123.45、b=67.8901,修正后代码的输出会是:
123.5 67.890
其中123.5总长度为6(右对齐,前面补1个空格),67.890总长度为12(右对齐,前面补6个空格)。
内容的提问来源于stack exchange,提问作者user20455580
相关产品推荐
相关产品推荐

