2015-12-06 34 views
0

我試圖打印出一張表,其中每列是一個不同的arraylist,其中每個元素然後沿着一條線。因此,像這樣:如何在java中使用printf()打印出表格?

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

等等.. 我怎麼會和printf()語句格式化這個?

+0

不能你只需要使用兩個'爲loops'並顯示每個單元的更多細節? – Sacert

+2

http://www.homeandlearn.co.uk/java/java_formatted_strings.html ['System.out.printf'](http://docs.oracle.com/javase/7/docs/api/java/io/ PrintStream.html#printf%28java.lang.String,%20java.lang.Object ...%29) – zapl

+1

lel。我知道這件事,但不知道C的printf是不是我想到的東西。但是,哦,好吧......每個人都會犯錯:p –

回答

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

首先查看Formatted StringsString.formatprintf共享相同的格式規則

所以,像...

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

會產生類似...

Name:   Age:   Gender: 

現在,我已經deliberatly細分的例子分成三行,但您可以使用一行代替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獲取關於格式specifers