java - 如何在 Java 中使用 printf() 格式化数组?

标签 java printf

我知道如何格式化单个变量,但我不知道如何用 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/

相关文章:

Java:检查一个位是长的0还是1

java - Smooch.io postmessage api 在 header 参数中传递 jwt

c - 将指针传递给函数并在函数结束时打印其值

c - linux猫: No such file or directory

java - 在私有(private)方法 createaccountID() 中创建唯一 id,而不使用 uuid

java - Android - 如何从原始文件中获取 Uri?

c - "-->"在 C 中是什么意思?

C复数和printf

c - 在我输入一个字母并按回车键之前,printf 不会给出输出

java - 按钮之间存在无法解释的空格