Java 对于由字符串和双精度组成的单个打印输出,如何组合printf格式参数,以及以何种顺序组合?

Java 对于由字符串和双精度组成的单个打印输出,如何组合printf格式参数,以及以何种顺序组合?,java,printf,Java,Printf,下午好 这里有三行java代码,我想将它们组合成一个printf语句。其想法是最终有几列均匀分布的数据,用计算机科学符号表示,其中有5个有效数字。我似乎无法按正确的顺序组合这些论点。此外,当我试图通过添加额外的“%-#s”格式来设置多个列的格式时,我被告知没有包含足够的参数,或者出现了一些有趣的东西。我做错了什么 System.out.printf("%-3s", "a_"+k+" = "); System.out.printf("%6.3e\n", a_k[k]); System.out.pr

下午好

这里有三行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]);
谢谢

当我试图通过添加额外的“%-#s”格式来格式化多个列时,有人告诉我没有包含足够的参数

它需要一个介于
a_k[k]
a1_k[k]
之间的字符串参数

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

  • %-3s
    ->
    “a_u“+k+”=”
  • %5.4e
    ->
    a_k[k]
  • %-10s
    ->(空白)
  • %5.4e
    ->
    a1_k[k]
  • 因此,只需为位置3插入一个

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

    或者,为了让眼睛更容易看

    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);
    

    嗯,我看到了四个
    %
    ,但是您只有三个值。您能告诉我们预期的格式应该是什么样的吗?我不知道您指的是什么文档,但简单地说。在您真正打印数据之前,不要使用花哨的格式。例如,您当前有
    “%s%e%s%e”
    ,所以(字符串、指数、字符串、指数)。第四个数据点在哪里?您有
    “a_uk+k+”=”,a_k[k],a1_k[k]
    ,这是三个值,如@cricket\u 007所述,您需要另一个字符串。如果您认为它是填充所必需的,那么您可以添加一个空字符串或一个带新行的字符串。“”或“\n”。类似于“a_“+k+”=”、a_k[k]、“\n”、a1_k[k]@Brion格式的东西看起来像:a1:column1e-10 column2e-14为什么不更进一步,替换
    “a_“+k+”=”的串联通过更改格式字符串?可以。这不是问题的一部分,虽然很公平。除非你想把它合并到你的答案中,否则我将把它作为一个注释。我的意思是,
    %-3s
    由于某种原因有填充,所以我想这是一个不使用它的原因。这做得相当好。然而,我注意到有一些错位,可能是由于那个空的“”。我可以将-10对齐/间距和5.4e应用于单个参数吗?不管怎样,谢谢你,这已经足够了。