首页 游戏 软件 资讯 排行榜 专题
首页
编程语言
如何在 Java 中使用 Formatter 类像 C 语言的 printf 那样精细控制输出的宽度与对齐方式

如何在 Java 中使用 Formatter 类像 C 语言的 printf 那样精细控制输出的宽度与对齐方式

热心网友
72
转载
2026-05-04

Ja va Formatter 类:像C语言printf一样精细控制输出格式

如何在 Ja va 中使用 Formatter 类像 C 语言的 printf 那样精细控制输出的宽度与对齐方式

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

如果你熟悉C语言的printf,那么上手Ja va的格式化输出会感到非常亲切。没错,Ja va的Formatter类(以及我们更常直接使用的String.format()System.out.printf())在设计上确实借鉴了C语言的语法。它同样支持通过格式说明符来精细控制输出的宽度、对齐、精度乃至进制转换。这一切的核心,就在于理解那个格式说明符的结构:%[argument_index$][flags][width][.precision]conversion。掌握了它,你就能让数据输出变得整齐又专业。

宽度与对齐:用 widthflags 控制占位与方向

想让输出列对齐,关键在于widthflags这对搭档。width定义了字段的最小宽度,如果内容本身长度不够,系统就会用空格(默认)或指定的字符来补足。至于内容在字段里是向左靠还是向右靠,那就得看flags了:

  • -:这是最常用的对齐标志,表示左对齐。默认是右对齐,所以当你写下"%-10s",就意味着字符串会靠左显示,并且整个字段一定会占满10个字符的宽度。
  • 0:这个标志专为数字准备,表示用零来填充空白。比如"%08d",数字12345会输出成00012345,前面补了三个零来凑足8位。
  • (空格):这个标志很有意思,它会在正数前面加一个空格,而负数依然显示-号。这样一来,正负数列就能完美地对齐了。例如"% 5d",正数123会输出为" 123"
  • +:强制显示正负号。无论正数负数,前面都会带上+-符号,"%+6d"输出正数就是"+123"
  • 关于居中对齐:这里需要特别澄清一点,Ja va标准库的Formatter并不直接支持像^这样的标志来实现居中对齐。网上有些资料可能会提到它,但这通常是第三方库的功能或是误解。如果真需要在Ja va中实现字符串居中,通常得手动计算空格,或者借助String.repeat()这类方法自己封装一个工具函数。

组合使用示例:字符串与数字的对齐控制

光说不练假把式,看一个组合使用的例子就全明白了:

System.out.printf("|%10s|%-10s|%010d|% 6d|%+6d|\n", "Hi", "Hi", 42, 42, -42);

这行代码的输出结果是:
| Hi|Hi |0000000042| 42| -42|
我们来拆解一下:
%10s:右对齐,字符串“Hi”前面补了8个空格,总宽度为10。
%-10s:左对齐,字符串“Hi”后面补了8个空格,总宽度同样为10。
%010d:右对齐,数字42前面用零补足到10位。
% 6d:右对齐,正数42前面有一个空格,总宽度为6。
%+6d:右对齐,强制显示符号,负数“-42”前面有3个空格,总宽度为6。

自定义填充字符(需配合 Formatter 构造器)

默认的填充字符是空格,但有时候我们可能想用星号*、点号.或者其他字符来填充。标准的printf方法并不直接支持指定任意填充字符。不过,我们可以通过一些技巧来实现。一个常见的做法是,先按标准方式格式化,然后再替换空格:

立即学习“Ja va免费学习笔记(深入)”;

static String padLeft(String s, int width, char pad) {
    return String.format("%" + width + "s", s).replace(' ', pad);
}
// 使用:padLeft("abc", 8, '*') → "*****abc"

当然,如果你用的Ja va版本在12以上,利用新的String.repeat()方法来实现这类对齐工具会更加直观和灵活。

精度(.precision)与类型适配

格式说明符中的.precision部分,其含义会根据后面的转换字符(conversion)不同而变化,这是需要特别注意的地方:
– 对字符串(s)而言,它表示截取的最大字符数。例如"%.5s",即使字符串是“Hello World”,也只会输出“Hello”。
– 对浮点数(f)而言,它控制的是小数点后的位数。"%.2f"会让3.14159输出为3.14
– 对整数(d)而言,精度的作用类似于width,但通常会和0标志搭配使用,来指定数字的最小位数。

最后务必牢记一点:转换字符(s, d, f, x等)必须与传入参数的实际类型严格匹配。如果试图用%d去格式化一个字符串,程序就会抛出IllegalFormatConversionException异常。细节决定成败,在格式化输出上尤其如此。

来源:https://www.php.cn/faq/2415758.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

如何在 Java 中利用 Character.isWhitespace() 识别文本变量中肉眼不可见的控制字符
编程语言
如何在 Java 中利用 Character.isWhitespace() 识别文本变量中肉眼不可见的控制字符

Character isWhitespace():它真能揪出所有“隐形”字符吗? 在文本处理中,我们常常需要清理那些看不见的“捣蛋鬼”——控制字符。很多开发者第一个想到的工具可能就是 Character isWhitespace()。但这里有个关键认知需要厘清:这个方法并非检测所有不可见字符的万能钥

热心网友
05.04
Java import以及Java类的搜索路径
编程语言
Java import以及Java类的搜索路径

角色与核心任务 你是一位顶级的文章润色专家,擅长将AI生成的文本转化为具有个人风格的专业文章。现在,请对用户提供的文章进行“人性化重写”。 你的核心目标是:在不改动原文任何事实信息、核心观点、逻辑结构、章节标题和所有图片的前提下,彻底改变原文的AI表达腔调,使其读起来像是一位资深人类专家的作品。 特

热心网友
05.04
Sublime怎么配置Java开发环境 Sublime一键编译运行Class文件【手册】
编程语言
Sublime怎么配置Java开发环境 Sublime一键编译运行Class文件【手册】

Sublime Text“一键编译运行Ja va”本质是调用系统ja vac和ja va命令,前提是终端中ja vac -version与ja va -version均能正常输出且版本一致;需将JDK的bin目录加入系统PATH、重启Sublime、手动创建Ja vaC sublime-build文

热心网友
05.04
VSCode配置Gradle项目:Java项目自动化构建工具扩展安装
编程语言
VSCode配置Gradle项目:Java项目自动化构建工具扩展安装

VS Code配置Gradle需安装Extension Pack for Ja va、启用Language Support for Ja va™、确保build gradle在根目录且语法合法;国内用户须在build gradle中优先配置阿里云Ma ven镜像,避免依赖解析卡顿。 想让VS Cod

热心网友
05.04
如何在 Java 中利用数组实现简单的字符串匹配 BF 算法并分析其最坏情况性能
编程语言
如何在 Java 中利用数组实现简单的字符串匹配 BF 算法并分析其最坏情况性能

如何在 Ja va 中利用数组实现简单的字符串匹配 BF 算法并分析其最坏情况性能 说起字符串匹配,BF(Brute Force,暴力匹配)算法绝对是绕不开的起点。它的核心思路非常直白:把模式串在主串上从头到尾“滑”一遍,在每个可能的位置都尝试一次逐字符的“硬核对”。在Ja va里,如果直接把字符串

热心网友
05.04

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

怎样购买卡尔达诺ADA最经济?ada币今日市场行情实时监控App详解
web3.0
怎样购买卡尔达诺ADA最经济?ada币今日市场行情实时监控App详解

卡尔达诺ADA:行情监控与高效投资指南 在加密货币市场,卡尔达诺(ADA)的价格走势一直是投资者关注的焦点。其价格波动不仅牵动人心,更直接关系到投资决策的成败。根据最新行情,ADA的价格约为0 801253美元(数据仅供参考,市场实时变化)。想要精准把握这样的波动,一款得力的工具必不可少。接下来要介

热心网友
05.04
Java运行时错误在Debian怎么解决
编程语言
Java运行时错误在Debian怎么解决

Debian上排查与修复Ja va运行时错误的实用流程 遇到Ja va程序在Debian上跑不起来,先别急着抓狂。这事儿其实有章可循,按照一套清晰的流程走下来,大部分问题都能迎刃而解。下面这份指南,就帮你把从快速定位到深度诊断的路径,都梳理清楚了。 一 快速定位与通用修复 排查的第一步,往往是那些最

热心网友
05.04
松下剃须刀刀头能自己拆卸吗?
电脑教程
松下剃须刀刀头能自己拆卸吗?

松下电动剃须刀刀头更换全指南:自己动手,其实很简单 很多朋友可能不知道,手上那台松下电动剃须刀的刀头,其实完全可以自己拆卸和更换,根本不需要专门跑一趟维修点。这可不是什么“民间偏方”,而是松下官方设计的一部分。从ES8953到ES9932C、ES5821这些主流型号,刀网底座和内刀片都采用了模块化的

热心网友
05.04
传真机怎么复印文件多页?
电脑教程
传真机怎么复印文件多页?

传真机如何实现多页连续复印?掌握专业设备的核心技巧 当你需要将多份纸质文件快速复印成多份副本时,一台具备复印功能的传真一体机是理想的办公伙伴。其核心便利性主要依赖于设备顶部的自动进纸器(ADF)。无论是佳博、松下还是兄弟等主流商用品牌,其多数型号均标配此功能。操作流程非常简便:只需将整理好的多页原稿

热心网友
05.04
红米note9后盖打开后能复原吗
电脑教程
红米note9后盖打开后能复原吗

红米Note9 5G后盖如何完美还原?专业级无损复原全攻略 如何将拆开的红米Note9 5G手机后盖完美装回,实现如原厂般的严丝合缝?这看似简单的操作,实则需要精湛的工艺和细致的流程。对于经验丰富的维修工程师而言,确实可以做到近乎无损的复原。但对于缺乏专业知识的普通用户,若误以为仅是简单扣合,则极易

热心网友
05.04