Java でテーブルを出力する

Rupam Yadav 2023年10月12日
  1. Java で printf()/println() を使用してリストをテーブルとして出力する
  2. Java で System.out.format() を使用してリストをテーブルとして出力する
Java でテーブルを出力する

Java で表形式の構造で情報を出力するには、クラス java.io.PrintStreamprintf() または format() メソッドを使用できます。

Java で printf()/println() を使用してリストをテーブルとして出力する

printf(format, arguments) メソッドは文字列フォーマットを提供します。フォーマットパターンを使用してフォーマットのルールを指定できます。ルールは%で始まります。

ここには、idnameagegrade などの基本属性を持つ POJO クラス Student と、生徒の List を作成してその情報を表形式で出力する TestExample クラスを用意しています。

書式設定文字列は、リテラルと書式指定子で構成され、フラグ、幅、精度、変換文字がこの順序で含まれます。たとえば、%[flags][width][.precision]conversion-charcater です。括弧内の指定子はオプションです。printf は内部で java.util.Formatter を使用してフォーマット文字列を解析し、出力します。

conversion-character は、文字列のフォーマット方法を決定します。ここでは、一般的な 2つ、sd、および 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 パッケージは、printprintln を置き換えるために使用される 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 Yadav
Rupam Yadav avatar Rupam Yadav avatar

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

関連記事 - Java Print