下午好
我想将这里的三行 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]
之间需要一个字符串参数。
以下是我认为您需要的四种格式。
%-3s
->"a_"+ 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);
关于java - 对于由字符串和 double 组成的单个打印输出,我如何以及以什么顺序组合 printf 格式化参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39924520/