Java でテーブルを出力する
Java で表形式の構造で情報を出力するには、クラス java.io.PrintStream
の printf()
または format()
メソッドを使用できます。
Java で printf()
/println()
を使用してリストをテーブルとして出力する
printf(format, arguments)
メソッドは文字列フォーマットを提供します。フォーマットパターンを使用してフォーマットのルールを指定できます。ルールは%
で始まります。
ここには、id
、name
、age
、grade
などの基本属性を持つ POJO クラス Student
と、生徒の List
を作成してその情報を表形式で出力する TestExample
クラスを用意しています。
書式設定文字列は、リテラルと書式指定子で構成され、フラグ、幅、精度、変換文字がこの順序で含まれます。たとえば、%[flags][width][.precision]conversion-charcater
です。括弧内の指定子はオプションです。printf
は内部で java.util.Formatter
を使用してフォーマット文字列を解析し、出力します。
conversion-character
は、文字列のフォーマット方法を決定します。ここでは、一般的な 2つ、s
、d
、および c
を使用しました。s
は文字列をフォーマットし、d
は 10 進整数をフォーマットし、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())
にも、のフォーマット指定子とゲッターメソッドがあります。属性の値を取得するための学生クラス。
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 パッケージ
は、print
と println
を置き換えるために使用される 2つのメソッドを PrintStream
クラスに提供します。これらのメソッドは format()
と printf()
であり、同等です。format(String format, Object... args)
では、フォーマットは使用されるフォーマットを指定します。args
は、このフォーマットを使用して出力される引数のリストです。
ここでは、String
データ型の 2D 配列を作成します。この時点では、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