我知道如何格式化单个变量,但我不知道如何用 printf()
格式化数组。我想显示我的程序,每个数字彼此垂直排列,每行上的每个数字具有相同数量的空格。下面是我用不同数字表示的示例:
1.1 2.2 3.3 4.4 5.5
1 2 3 4 5
这是我尝试显示数字的代码:
// create array
String[] tempsArray2 = temps2.toArray(new String[0]);
// for-each loop
for(String ss : tempsArray2){
// display ss to make sure program works correctly
System.out.printf("%40s", ss);
当我运行它时,程序显示如下:
run:
70.3 70.8 73.8 77.0 80.7 83.4 84.5 84.4 83.4 80.2 76.3 72.0
69 67 66 64 66 69 67 67 70 69 69 70BUILD SUCCESSFUL (total time: 0 seconds)
我该如何解决这个问题,以便我可以使用单个 System.out.printf();
语句对整个数组进行一次格式化,还是我必须将它们一个一个地格式化?任何帮助将不胜感激。
最佳答案
如果您想要对格式进行特定控制,则必须分别对每个项目执行此操作。有 Arrays.toString()
,但它不提供对单个元素的控制。
如果您正在打印多个阵列并且您希望它们的输出“对齐”,您将需要选择输出格式以便发生这种情况,例如:
float data1[] = new float[] { 1, 2.5f, 30, 4.56f, 5 };
int data2[] = new int[] { 1, 22, 33, -4, 5 };
for (float f:data1) System.out.printf("%6.2f ", f);
System.out.println();
for (int n:data2) System.out.printf("%3d ", n);
System.out.println();
哪些输出:
1.00 2.50 30.00 4.56 5.00
1 22 33 -4 5
该示例可能不是您想要的精确格式,但重点是,您可以通过这种方式进行控制。如果你想做左对齐的数字,更宽的字段,如果你的类型是字符串或 float 或 double 或整数等。
有时它有助于计算字段宽度和填充空间,例如文本编辑器或首先在纸上。例如。对于上面的内容,我们尝试在 float 和整数之间排列小数点和数字,我喜欢首先在固定宽度的编辑器中计算出格式(比如在评论或记事本中),例如:
FFF.FF FFF.FF FFF.FF FFF.FF
III III III III
然后您可以更轻松地看到它如何转换为格式说明符:
FFF.FF
是“%6.2f ”
。III
是"%3d "
。
请参阅 Formatter
的文档有关可以传递给 System.out.printf()
的格式代码的更多信息。
关于java - 如何在 Java 中使用 printf() 格式化数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19849355/