表を整列させる
データの列を整形します。
「表を整列させる」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全4レッスンが含まれています。
配置が重要な理由
データの行を出力するとき、列が不揃いだと読みにくくなります。列を揃えると、数値とラベルをきれいに上下で揃えられます。
printf の幅とフラグを使えば、コンソール上で整った表を作成できます。
デフォルトは右揃え
%10s のように幅を指定すると10文字分を確保し、左側を埋めるため、テキストは右揃えになります。
数値も同じように扱われるため、数値の列は右端で揃います。
public class Main {
public static void main(String[] args) {
System.out.printf("[%10s]\n", "hi");
}
}マイナス記号で左揃え
- フラグを追加すると、フィールド内で左揃えにできます。%-10s はテキストを左側に置き、右側を埋めます。
左揃えはラベルや名前に適しています。
public class Main {
public static void main(String[] args) {
System.out.printf("[%-10s]\n", "hi");
}
}2つの列
左揃えのラベルと右揃えの数値を組み合わせて、1行を作成します。%-10s%5d により、名前に10文字分、数値に5文字分の幅を指定します。
すべての行で同じ書式を繰り返すと、列が揃います。
public class Main {
public static void main(String[] args) {
System.out.printf("%-10s%5d\n", "Apples", 3);
System.out.printf("%-10s%5d\n", "Pears", 12);
}
}簡単な表
見出しと各データ行に同じ書式文字列を使うと、全体の配置を維持できます。
ここでは3行で1つのパターンを共有しているため、列が整った状態に保たれます。
public class Main {
public static void main(String[] args) {
String fmt = "%-8s%6d\n";
System.out.printf(fmt, "Name", 0);
System.out.printf(fmt, "Ann", 90);
System.out.printf(fmt, "Bob", 7);
}
}小数の配置
金額や測定値では、幅と精度を組み合わせます。%8.2f は、小数点以下2桁の数値を8文字分の幅で右揃えにします。
行をまたいで小数点が縦に揃います。
public class Main {
public static void main(String[] args) {
System.out.printf("%8.2f\n", 5.5);
System.out.printf("%8.2f\n", 123.4);
}
}ヘッダーと数値
1行の中で文字列列と数値列を組み合わせます。左寄せのラベルと右寄せの価格は、自然な組み合わせになります。
このパターンは、ほとんどのコンソールレポートの基本です。
public class Main {
public static void main(String[] args) {
System.out.printf("%-10s%8.2f\n", "Coffee", 3.5);
System.out.printf("%-10s%8.2f\n", "Cake", 12.0);
}
}列幅の選択
最も長い値以上の幅を選んでください。そうしないと、テキストが列からはみ出して整列が崩れます。
値がフィールドより広い場合、printf は値全体を出力し、指定された幅を無視します。
public class Main {
public static void main(String[] args) {
System.out.printf("[%3s]\n", "toolong");
}
}行のループ処理
ループと共有する1つの書式文字列を組み合わせると、表全体を簡単に生成できます。
ループが1回進むごとに整列された1行が出力されるため、データを追加してもレイアウトが崩れません。
public class Main {
public static void main(String[] args) {
String[] names = {"Sun", "Mon", "Tue"};
int[] hrs = {8, 12, 5};
for (int i = 0; i < names.length; i++) {
System.out.printf("%-6s%4d\n", names[i], hrs[i]);
}
}
}String.format との組み合わせ
出力前にテキストが必要な場合は、String.format を使って整列された各行を作成できます。
幅と整列に関するルールは同じです。
public class Main {
public static void main(String[] args) {
String row = String.format("%-8s%5d", "Total", 99);
System.out.println(row);
}
}タブと幅
\t タブで列を区切ることもできますが、タブストップは環境によって異なり、長い値があると整列が崩れます。
%-10s のような固定幅なら、信頼性の高い予測可能な列にできるため、表にはこちらを使用してください。
理解度チェック
名前を12文字分の幅で左寄せする書式はどれでしょうか。
まとめ
幅フィールド、左寄せを指定する - フラグ、整った小数列を作る %8.2f を使って、整列された表を作成しました。
printf、String.format、整列を使えば、あらゆるコンソール出力をきれいに整形できます。
よくある質問
「表を整列させる」レッスンは無料ですか?
はい。「表を整列させる」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全4レッスンが含まれています。
「表を整列させる」で何を学びますか?
データの列を整形します。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Java Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「表を整列させる」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJava Academyレッスンでコードを書いて実行できますか?
はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。