[英]How do I use printf() in java to print out a table?
我試圖打印出一個表格,其中每一列都是一個不同的數組列表,然后每個元素都在一行中。 所以像這樣:
Name: Age: Gender:
Bob 18 Male
Mary 25 Female
等等......我將如何使用 printf() 語句格式化它?
首先查看 格式化字符串。 String.format
和printf
共享相同的格式規則
所以,像...
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.