使用 system.out.printf 格式化 java 字符串

2024-03-11

我一直在寻找很多关于 java 中的 System.out.printf 格式化字符串输出的问题,但我似乎不明白如何使用它。

我正在尝试打印看起来像这样的漂亮专栏

601 GoPro Hero5 Black       276.95
602 GoPro Hero5 Session     199.00
611 Canon EOS Rebel         361.89

但我能得到的最好的就是这个

601 GoPro Hero5 Black     276.95
602 GoPro Hero5 Session     199.00
611 Canon EOS Rebel     361.89

我似乎能够对齐前两个值,但不能对齐第三个值。这是我的代码

System.out.printf("%-1s %10s %10.2f\n", "ex string", "ex string", 276.95);

我认为“-1s”左对齐为负号,1将是第一个和第二个输入之间的空格,然后%10s将相距十个字符,%10.2将相距十个字符,并有两个小数位。所以我尝试做

System.out.printf("%-1s %10s %20.2f\n", "ex string", "ex string", 276.95);

但这仍然没有使第三个值彼此内联。


修改后的尝试使用

System.out.printf("%-10s %-10s %10.2f\n", "ex string", "ex string", 276.95);

结果是...

601        GoPro Hero5 Black     276.95
602        GoPro Hero5 Session     199.00
611        Canon EOS Rebel     361.89

作为记录,我的代码正在获取如下变量:

System.out.printf("%-10s %-10s %10.2f\n", items.get(i).getItemNumber(), items.get(i).getName(), items.get(i).getPrice());

字段宽度说明符不是间距规范。

%-1表示在至少一个字符宽的字段中左对齐。但第一列的宽度始终至少为 3 个字符,因此说明符会被忽略。第一列看起来很整齐纯粹是巧合:你所有的数字碰巧都是三位数。

相似地,%10表示在至少 10 个字符宽的字段中右对齐。但所有相机名称都比这个长得多,因此说明符实际上被忽略了。

您可能正在寻找更像的东西

%-4s%-25s%6.2f

这意味着:

  1. 左对齐至少 4 个字符宽的字段中的第一个参数
  2. 左对齐至少 25 个字符宽的字段中的第二个参数
  3. 在至少 6 个字符宽的字段中右对齐打印数字,小数点后保留两位数字

你可以替换%4s with %3s<space>以获得类似的效果。区别在于如何处理溢出。第一个版本在第一列中长度超过 3 个字符的值后面不会有空格。第二个会。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 system.out.printf 格式化 java 字符串 的相关文章

  • 如何替换引号之间出现的任何单词

    我需要能够替换所有出现的单词 and 仅当它出现在单引号之间时 例如 将字符串中的 and 替换为 XXX This and that with you and me and others and not her and him 结果是 T
  • 生成固定长度的随机数组[重复]

    这个问题在这里已经有答案了 我只是想更改我的代码 以便每次运行代码时都会生成固定长度 100 个整数的随机数组 而不仅仅是在代码中包含一个预先设置的数组 我对此很陌生 所以只需要正确方向的指导 谢谢 public class Selecti
  • 具有多字符替换的字符串组合(产生返回Java的替代重写)[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 还有另一篇 Stack Overflow 帖子是为与车辆登记号相关的算法创建的 根据输入的车牌 例如ABC123 和列表 替换值 例如
  • Spring MVC 配置启用

    我正在从头开始建立一个项目 目前我正在配置Spring MVC 4 1 5使用java配置 整个应用程序正在 tomcat gradle 插件上运行 有人可以解释一下为什么我需要对班级进行以下调用DefaultServletHandlerC
  • java中数字字符串间隔排序

    我正在与一些人一起上一个人课 其中有姓名 年龄范围等详细信息 年龄区间为 0 5 6 10 11 30 31 45 46 50 50 100 100 110 我正在上 Person 课name ageBand字符串间隔及其参数化构造函数 g
  • 创建 CXF Web 服务客户端时出现 ServiceConstructionException (scala+java+wsdl2java)

    这些其他问题暗示了解决方案 但我无法让它发挥作用 无法解析 http schemas xmlsoap org wsdl soap 的绑定 https stackoverflow com questions 26159206 could no
  • Java:使用类型参数访问私有构造函数

    这是后续这个关于java私有构造函数的问题 https stackoverflow com questions 2599440 accessing the private constructor 假设我有以下课程 class Foo
  • Java中的异常通知

    使用 Tomcat 的 Web 应用程序有什么好的异常通知系统吗 寻找与 exception notification 等价的库 这些库可作为 Rails 的插件使用 看一下http logging apache org log4j 1 2
  • 如何使用jsp上传服务器文件夹上的文件[重复]

    这个问题在这里已经有答案了 我正在尝试使用 servlet jsp 将一些图像上传到位于我的服务器上的文件夹中 下面是我的代码 它在我的本地计算机上运行 import java io import java util import java
  • Spring:当我的类已经用@RestController注释时,为什么我仍然应该使用@RequestBody?

    我目前正在将 Java 和 Spring 用于我的 Web 服务应用程序 我正在使用 RestController希望消除使用注释的需要 ResponseBody and RequestBody注释 不幸的是 删除 RequestBody注
  • 将 LinkedHashset 内容复制到新的 ArrayList?

    我有一个最初包含一些内容的 listView 如果它得到相同的内容 我通过删除重复linkedhashset 现在 我想复制linkedhashset内容 即没有重复的内容到新的ArrayList 我尝试复制通过 p addAll 0 lh
  • 为什么 strcat() 之后字符串会被改变?

    这是源代码 int main char str dance char str1 hello char str2 abcd strcat str1 str2 printf s str output bcd why str更改后strcat s
  • 更新(合并)时缺少 Spring Data JPA 验证

    我正在使用 Spring Boot 1 5 4 RELEASE 和 Spring Data JPA 进行项目 遇到更新实体时未执行 Hibernate 验证器或至少在某些情况下未验证的问题 For Person如下所示 禁止使用空名称 并且
  • Java如何处理IF语句和效率

    我只是好奇 Java 实际是如何工作的if声明 注意 当我在下面说 组件 时 我指的是语句检查的各个部分 例如a b c 哪个在计算方面更有效 if a b c do stuff or if a if b if c do stuff 我之所
  • 如何反序列化数组 google-gson 内的数组

    我有这样的 JSON Answers Locale Ru Name Name1 Locale En Name Name2 Locale Ru Name Name3 Locale En Name Name4 正如你所看到的 我的数组里面有数组
  • 什么触发了java垃圾收集器

    我对 Java 中垃圾收集的工作原理有点困惑 我知道当不再有对某个对象的实时引用时 该对象就有资格进行垃圾回收 但是如果它有对实时对象的引用怎么办 可以说我有一个节点集合 它们再次引用更多节点 List 1 gt Node a gt Nod
  • 为什么这个 eclipse 错误显示以及它的解决方案应该是什么

    缺少库 xdoclet 1 2 1 jar 选择 XDoclet 的主目录 1 2 1 为什么这个 eclipse 错误显示以及它的解决方案应该是什么alz 这可能是因为该 jar 没有添加到您的项目构建路径中 请按照以下步骤操作 Righ
  • 三角形未在 OSX 上的 OpenGL 2.1 中绘制

    我正在学习有关使用 OpenGL 在 Java 中创建游戏引擎的教程 我正在尝试在屏幕上渲染一个三角形 一切运行良好 我可以更改背景颜色 但三角形不会显示 我还尝试运行作为教程系列的一部分提供的代码 但它仍然不起作用 教程链接 http b
  • 返回数据集的 kSoap 和 .Net Web 服务

    我知道使用数据集是一个很大的罪恶 但由于该服务不在我的控制之下 并且创建代理服务的前景是不可能的 我想看看是否有人创建了可以使用 kSoap 序列化器反序列化的类结构 或者我是否吸错了东西 同时要启动它 看看是否可行 以下是预期的结果数据
  • Oracle 的商业 Hotspot JVM 相对于 OpenJDK 有哪些性能优势?

    正如这个问题中所描述的 OpenJDK 与 Java HotspotVM https stackoverflow com q 44335605 1593077 Oracle 的商业 Hotspot JVM 本质上是 OpenJDK 加上一些

随机推荐

  • 将 Jython 与 Maven 结合使用

    我有一个 Maven 模块 它依赖于我通过 jython 代码访问的各种其他 Maven 依赖项 我现在已经完成了 我想将项目编译为 jar 或者甚至只是运行它而不编译 但我不知道从哪里开始 有谁知道如何运行一些 py 文件来访问其他包中的
  • MYSQL - 使用 while 循环更新

    declare c int set c 1 while c lt 700 do update users set profile display name concat substring first name 1 1 last name
  • .NET Core 更新迁移正在尝试再次重新创建表

    我首先正在开发 net core 3 项目代码 在此步骤中 我在表中添加了 2 列 然后我通过此代码 CLI 对解决方案进行了迁移添加 dotnet ef startup project MyApi Api migrations add a
  • mysql.service 丢失但显示在列表中 - 安装失败

    我使用的是 Ubuntu 17 04 长话短说 在与 MariaDB 进行了一些斗争之后 我遵循了一些关于如何完全地从我的家庭服务器中删除 MySQL 和 MariaDB 现在我无法重新安装mysql server 当我尝试时出现此错误 F
  • 非 ANSI 文件的 TStringList 行为

    在我的应用程序中 当我想要导入文件时 我使用 TStringList 但是 当有人从Excel导出数据时 文件编码是UCS 2 Little Endian TStringList无法读取数据 有什么方法可以验证这种情况 识别文本编码并向用户
  • Mod_wsgi工作进程分段错误(11)

    我的 django 应用程序有问题 该应用程序由 apache mod wsgi 托管 我在应用程序中添加了一些 matplotlib 代码 apache 工作进程现在崩溃了 我将这个问题简化为以下内容 没有任何 matplotlib 导入
  • 添加模型到集合后自动保存

    我有一个收藏myCollection我向其中添加模型如下 myCollection add title Romeo and Juliette author Shakespear 我现在可以将这个添加的模型保存到服务器吗 骨干Collecti
  • 找不到方法:'Void Google.Apis.Util.Store.FileDataStore..ctor(System.String)'

    我已经被困在这个问题上好几天了 我从 google api 示例中复制了确切的代码以将文件上传到 Google Drive 这是代码 UserCredential credential GoogleWebAuthorizationBroke
  • Spark失败:引起:org.apache.spark.shuffle.FetchFailedException:框架太大:5454002341

    我正在为确定父子项的表生成层次结构 以下是使用的配置 即使在收到有关太大框架的错误后也是如此 火花特性 conf spark yarn executor memoryOverhead 1024mb conf yarn nodemanager
  • 什么是 XPS 文件以及如何使用它

    我有一个简单的 C net Web 应用程序 我正在使用 XPS 文件 我使用了以下代码 private void button1 Click object sender EventArgs e try string xpsFile D C
  • C++ 多维数组运算符

    是否可以以某种方式重载多维数组的运算符 就像是 class A int operator const int x const int y 不 那是不可能的 不过 还有两种选择 你可以有operator 返回较小维度的数组 对于 3D 数组
  • Swift 中的懒惰是什么意思? [复制]

    这个问题在这里已经有答案了 我询问了有关堆栈溢出的多个问题 但没有得到可以定义什么是 LAZY 关键字以及为什么我们在 Swift 中使用它的答案 我对 Swift 很陌生 请解释一下 该词在两种情况下使用 惰性变量是一种存储的属性 只计算
  • action:@selector(showAlert:) 如何在这个showAlert方法中传递参数?

    我正在将自定义按钮添加到我的UITableViewCell 在该按钮的操作中我想打电话showAlert 函数并希望在方法中传递单元格标签 我如何在其中传递参数showAlert方法 action selector showAlert 如果
  • ASP.NET Core 6 中的非缓冲输出

    我正在尝试使用真正基本的 ASP NET Core 6 应用程序实现简单的流 非缓冲输出 下面的简单代码应该将 hello world 文本输出到客户端 然后关闭连接 甚至通过添加文档IHttpResponseBodyFeature选项 a
  • Google 地图动态语言更改

    我在我的一个项目中使用backbone js 并且使用Google 地图api 版本3 根据一些ajax 响应 我想动态更改Google 地图语言 有什么方法可以做到这一点 任何建议将不胜感激 提前致谢 考虑以下示例 其中我使用按钮 但您可
  • Java 代码中出现“没有为‘plsql’语言注册查询执行器工厂”异常

    我有一个简单的报告 显示数据库中的字段 我在 Jasper 中设置了一个数据适配器并放置了查询 我可以从 Jasper 成功预览报告 但是当涉及到 Java 时 它无法编译报告并显示以下异常 2014 年 6 月 18 日下午 3 17 4
  • 测试实体框架数据库连接

    我有一个通过实体框架连接到 MYSQL 数据库的应用程序 它工作 100 完美 但我想添加一小段代码 用于在应用程序启动时测试与数据库的连接 我的想法是简单地对数据库运行一个小命令并捕获任何异常 但是如果出现问题 例如 App Config
  • 如何停止或暂停 Pandora 和 Spotify

    我有一个应用程序 具有启动应用程序 Pandora 站或快捷方式的功能 一切都很好 后来我想停止我启动的应用程序 这适用于大多数事情 但 Pandora 和 Spotify 并不总是关闭 有时他们会这样做 但并非总是如此 这似乎与当前的 U
  • 詹金斯使用什么外壳?

    Jenkins调用时使用什么shellshell命令 我在 Linux 机器上运行 Jenkins 从 执行 shell 部分的帮助 问号图标 运行 shell 脚本 默认为 sh 但这是可配置的 建设该项目 如果您转到管理 Jenkins
  • 使用 system.out.printf 格式化 java 字符串

    我一直在寻找很多关于 java 中的 System out printf 格式化字符串输出的问题 但我似乎不明白如何使用它 我正在尝试打印看起来像这样的漂亮专栏 601 GoPro Hero5 Black 276 95 602 GoPro