java - 对于由字符串和 double 组成的单个打印输出,我如何以及以什么顺序组合 printf 格式化参数?

标签 java printf

下午好

我想将这里的三行 java 代码组合成一个 printf 语句。这个想法是最终有几列均匀分布的数据,用计算机科学记数法表示,有 5 位有效数字。我似乎无法以正确的顺序组合参数。此外,当我尝试通过添加额外的“%-#s”格式来格式化多列时,我被告知我没有包含足够的参数,或者出现了有趣的东西。我做错了什么?

System.out.printf("%-3s", "a_"+k+" = ");
System.out.printf("%6.3e\n", a_k[k]);
System.out.printf("%6.3e\n", a1_k[k]);

我已经尝试了以下各种顺序和组合但无济于事,并且无法理解有关如何正确实现它的 javadocs:

System.out.printf("%-3s%5.4e%-10s%5.4e\n", "a_"+k+" = ", a_k[k], a1_k[k]);

谢谢!

最佳答案

when I try to format multiple columns by adding extra "%-#s" formats, I am being told that I have not included enough arguments

a_k[k]a1_k[k] 之间需要一个字符串参数。

以下是我认为您需要的四种格式。

  1. %-3s -> "a_"+ k + "= "
  2. %5.4e -> a_k[k]
  3. %-10s ->(空格)
  4. %5.4e -> a1_k[k]

因此,只需在位置3插入一个""

System.out.printf("%-3s%5.4e%-10s%5.4e\n", "a_"+k+" = ", a_k[k], "", a1_k[k]);

See example

或者,为了让眼睛更舒服

String akEq = "a_"+k+" = ";
float col1 = a_k[k];
float col2 = a1_k[k];
System.out.printf("%-3s%5.4e%-10s%5.4e\n", akEq, col1, "", col2);

并且,更进一步,将 "a_%d = " 也放入格式中,而不是使用字符串连接

System.out.printf("a_%d = %5.4e%-10s%5.4e\n", k, col1, "", col2);

关于java - 对于由字符串和 double 组成的单个打印输出,我如何以及以什么顺序组合 printf 格式化参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39924520/

相关文章:

java - 使用 String.format 时如何缩进新行?

c - c中打印数组时出现段错误

c - 为什么我在 printf 中的输出是打印 -nan 和 0.0000 C 语言

按钮操作后 JavaFx 阶段没有响应

java - 在Java中提取一个特定的单词和它每一边的一些标记

java - String .replaceAll() 从 Sqlite 数据库获取数据时的意外行为

java - hibernate中get泛型方法的含义

c - 使用 %f 打印 double 变量,终端显示 "?"

c - 使用 increment(*p++ = x) 取消引用指针会将 *p 的值更改为 p

java - Java 的 C 兼容 printf 输出