簡體   English   中英

如何在java中使用printf()來打印表格?

[英]How do I use printf() in java to print out a table?

我試圖打印出一個表格,其中每一列都是一個不同的數組列表,然后每個元素都在一行中。 所以像這樣:

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

等等......我將如何使用 printf() 語句格式化它?

首先查看 格式化字符串 String.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

另請參閱格式字符串語法以獲取有關格式說明符的更多詳細信息

System.out.printf("Name: %s\nAge: %d\nGender: %s\n", name, age, gender);

請不要多次調用 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());
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM