下午好,
以下是三行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]);
谢谢!
答案 0 :(得分:3)
当我尝试通过添加额外的“% - #s”格式来格式化多个列时,我被告知我没有包含足够的参数
期待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);