Java printf左对齐格式化:带描述语句的多列打印需求
解决方案
要实现体积和密度数值列的左对齐,你可以通过给描述文本设置固定宽度的左对齐格式来实现,无需额外API,仅用printf即可完成。核心思路是给每行的[形状] volume:和[形状] density:部分分配固定的字符宽度,并指定左对齐(-标志),这样后续的数值就会自动对齐到同一列。
修改后的代码
System.out.printf("%-18s %.2f cu ft %-22s %.2f lbs. / cu ft\n\n", "Box volume:", userBox.calculateVolume(), "Box density:", userBox.calculateDensity()); System.out.printf("%-18s %.2f cu ft %-22s %.2f lbs. / cu ft\n\n", "Cone volume:", userCone.calculateVolume(), "Cone density:", userCone.calculateDensity()); System.out.printf("%-18s %.2f cu ft %-22s %.2f lbs. / cu ft\n\n", "Cylinder volume:", userCylinder.calculateVolume(), "Cylinder density:", userCylinder.calculateDensity()); System.out.printf("%-18s %.2f cu ft %-22s %.2f lbs. / cu ft\n\n", "Sphere volume:", userSphere.calculateVolume(), "Sphere density:", userSphere.calculateDensity());
格式说明
%-18s:左对齐(-)的字符串格式,占用18个字符宽度。无论[形状] volume:的长度是多少,都会被填充到18位,确保后续的体积数值从同一位置开始。%-22s:同理,给[形状] density:分配22个字符宽度的左对齐格式,保证密度数值列对齐。- 中间的空格是为了两列之间保留合适的间距,可根据实际显示效果微调宽度数值(比如18、22)。
这样修改后,所有体积数值会左对齐在同一列,密度数值也会整齐排列,完全符合你不能改表头的要求。
内容的提问来源于stack exchange,提问作者Dylan Warcholik
相关产品推荐
相关产品推荐

