【问题标题】:How do I use printf() in java to print out a table?如何在 java 中使用 printf() 打印表格?
【发布时间】:2015-12-06 23:12:27
【问题描述】:

我正在尝试打印一个表格,其中每一列都是一个不同的数组列表,然后每个元素都向下一行。所以是这样的:

Name:    Age:    Gender:
Bob        18      Male
Mary       25      Female

等等.. 如何使用 printf() 语句格式化?

【问题讨论】:

标签: java arraylist printf


【解决方案1】:

首先查看Formatted StringsString.formatprintf 共享相同的格式规则

所以,类似...

System.out.printf("%15s", "Name:");
System.out.printf("%4s", "Age:");
System.out.printf("%17s:%n", "Gender:");

会产生类似...

Name:          Age:          Gender:

现在,我特意将示例分成三行,但您可以改用像 System.out.printf("%-15s%-4s%17s%n", "Name:", "Age:", "Gender:"); 这样的单行。

这里重要的是%s之间的数字,%15s,它允许格式化程序用最多15个空格填充剩余空间(对于Name:,这将增加10个空格) ,这将在下一个示例中变得明显......

接下来我们需要对数据进行格式化,例如...

String name = "Bob";
int age = 18;
String gender = "Male";
System.out.printf("%-15s", name);
System.out.printf("%4d", age);
System.out.printf("%17s%n", gender);

name = "Mary";
age = 25;
gender = "Female";
System.out.printf("%-15s", name);
System.out.printf("%4d", age);
System.out.printf("%17s%n", gender);

注意,每一列都使用相同的间距!这很重要!

总之,这将打印出来...

Name:          Age:          Gender:
Bob              18             Male
Mary             25           Female

另请参阅Format String Syntax 了解有关格式说明符的更多详细信息

【讨论】:

    【解决方案2】:
    System.out.printf("Name: %s\nAge: %d\nGender: %s\n", name, age, gender);
    

    【讨论】:

      【解决方案3】:

      请不要多次调用 printf,而是使用 StringBuilder 来创建一个动态字符串,在字符串完成后打印它。

      import java.util.*;
      
      public class Main
      {
          public static void main(String[] args) {
              int rows = 2;
              StringBuilder stringBuilder = new StringBuilder(rows * columns * 36);
              stringBuilder.append(String.format("%-15s%-4s%17s\n", "Name:", "Age:", "Gender:"));
              stringBuilder.append('\n');
              for (int i = 0; i < rows ; ++i ) {
                  stringBuilder.append(String.format("%-15s%4d%17s\n", "column value",18,"Male"));
              }
              System.out.println(stringBuilder.toString());
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-04
        • 2014-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多