在 Java 中列印表格
要在 Java 中以表格結構列印任何資訊,我們可以使用 java.io.PrintStream
類的 printf()
或 format()
方法。
在 Java 中使用 printf()
/println()
將列表列印為表格
printf(format, arguments)
方法提供字串格式。我們可以使用格式模式指定格式規則,規則以%
開頭。
這裡我們有一個 POJO 類 Student
具有基本屬性,如 id
、name
、age
和 grade
以及 TestExample
類,我們在其中建立學生的 List
並將該資訊列印在表格中格式。
格式化字串由文字和格式說明符組成,其中包括此序列中的標誌、寬度、精度和轉換字元。例如%[flags][width][.precision]conversion-charcater
。括號中給出的說明符是可選的。printf
內部使用 java.util.Formatter
來解析格式字串並輸出它。
conversion-character
決定了字串的格式。這裡我們使用了兩個常見的,s
、d
和 c
。s
格式化字串,而 d
格式化十進位制整數,而 c
的結果是一個 Unicode 字元。因此,在此程式碼中,我們使用了寬度和轉換字元的組合來將給定學生的資料格式化為表格。
方法 printf("%10s %20s %5s %5s", "STUDENT ID", "NAME", "AGE", "GRADE")
具有格式說明符來格式化傳遞的引數。因此,例如,%10s
用指定的字元數格式化字串並右對齊它。println()
方法在列印結果後將游標移動到下一行。
方法 format("%10s %20s %5d %5c",student.getId(), student.getName(), student.getAge(), student.getGrade())
也有格式說明符和 getter 方法學生類來獲取屬性的值。
import java.util.ArrayList;
import java.util.List;
public class TableExample {
public static void main(String args[]) {
List<Student> students = new ArrayList<>();
students.add(new Student("S101", "John", 8, '4'));
students.add(new Student("S102", "Leo", 10, '6'));
students.add(new Student("S103", "Mary", 5, '2'));
students.add(new Student("S104", "Lisa", 6, '3'));
System.out.println(
"-----------------------------------------------------------------------------");
System.out.printf("%10s %20s %5s %5s", "STUDENT ID", "NAME", "AGE", "GRADE");
System.out.println();
System.out.println(
"-----------------------------------------------------------------------------");
for (Student student : students) {
System.out.format("%10s %20s %5d %5c", student.getId(), student.getName(), student.getAge(),
student.getGrade());
System.out.println();
}
System.out.println(
"-----------------------------------------------------------------------------");
}
}
class Student {
private String id;
private String name;
private int age;
private Character grade;
Student(String id, String name, int age, Character grade) {
this.id = id;
this.name = name;
this.age = age;
this.grade = grade;
}
public String getId() {
return id;
}
public Character getGrade() {
return grade;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
輸出:
-----------------------------------------------------------------------------
STUDENT ID NAME AGE GRADE
-----------------------------------------------------------------------------
S101 John 8 4
S102 Leo 10 6
S103 Mary 5 2
S104 Lisa 6 3
-----------------------------------------------------------------------------
在 Java 中使用 System.out.format()
將列表列印為表格
java.io 包
為 PrintStream
類提供了兩種用於替換 print
和 println
的方法。這些方法是 format()
和 printf()
並且是等效的。在 format(String format, Object... args)
中,格式指定要使用的格式,args
,即使用此格式列印的引數列表。
在這裡,我們建立了一個 String
資料型別的二維陣列;此時未指定 4 行和列。它只是意味著我們宣告瞭一個由 4 個陣列組成的陣列。然後,我們用一個 String 物件初始化每一行。
我們為 table
中的每一行執行一個 for 迴圈,這是一個多維陣列。對於每一行,我們使用 System.out.format()
為每一行指定格式化模式來格式化該行。
這裡 %15s
表示右對齊的字串,寬度為 15,%n
是平臺特定的行分隔符。
public class Test1 {
public static void main(String args[]) {
String[][] table = new String[4][];
table[0] = new String[] {"Apple", "Banana", "Papaya"};
table[1] = new String[] {"Chicken", "Mutton", "Fish"};
table[2] = new String[] {"Carrots", "Beans", "Cabbage"};
table[3] = new String[] {"Candy", "Cake", "Bread"};
for (String[] row : table) {
System.out.format("%15s %15s %15s %n", row);
}
}
}
輸出:
Apple Banana Papaya
Chicken Mutton Fish
Carrots Beans Cabbage
Candy Cake Bread
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn