【Java】JSPでタグライブラリを使う(JSTL)
こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ
Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!
フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。
こんにちは。駆け出しプログラマーの松倉です!
ここでは、数値をフォーマット処理をする方法について紹介・解説します。
プログラミング未経験の方、Javaについて勉強している方、これから勉強したいと思っている方の参考になれば幸いです!
int型や double型などのデータに対して通貨記号 $ をつけた金額表示、通貨セパレータ,カンマ区切り、頭からのゼロ埋めなど様々なフォーマット処理を行いたい場合があります。
Javaではこれらの数値のフォーマット処理のために便利なクラスがあります。
この記事ではフォーマット処理について以下の解説をします。
・数値のフォーマットの変更方法 NumberFormatクラス
・独自のフォーマットの作成方法 DecimalFormatクラス
・ロケールの指定方法
・数値のゼロ埋め
NumberFormatクラスは、数値のフォーマットを変更するクラスです。
特定のフォーマットが既に準備されており、「 java.text.NumberFormat」をインポートすることで使用することができます。
NumberFormatクラスには、フォーマットとして以下のメソッドが用意されています。
NumberFormatクラスは abstract(抽象)クラスであるためインスタンス化できませんが、いくつかの static(静的)メソッドが用意されており、予め用意されたフォーマットのインスタンスを利用できます。
また、取得したインスタンスに対して以下のようなセッターメソッドを利用することで、フォーマットをカスタマイズすることもできることを覚えておきましょう!
NumberFormatクラスを利用して数値をフォーマット処理したコードを確認しましょう!
import java.text.NumberFormat;
public class Sample1 {
public static void main(String[] args) {
NumberFormat curFormat = NumberFormat.getCurrencyInstance(); //通貨
NumberFormat intFormat = NumberFormat.getIntegerInstance();//整数
NumberFormat perFormat = NumberFormat.getPercentInstance(); //パーセント
NumberFormat comFormat = NumberFormat.getNumberInstance(); //カンマ区切り
System.out.println(curFormat.format(123.45));
System.out.println(intFormat.format(123.456));
System.out.println(perFormat.format(1.234));
System.out.println(comFormat.format(123456789));
}
}
実行結果:
¥123
123
123%
123,456,789
NumberFormatクラスを使うことでフォーマットの処理が簡単にできました!
DecimalFormatクラスはデフォルトで準備されたフォーマットを使わず独自にフォーマットを作成して利用します。
このクラスは「 java.text.DecimalFormat」をインポートすることで使用することができます。
DecimalFormatクラスのインスタンスを生成する際に引数としてフォーマットを文字列で設定します。
独自フォーマットの設定は以下の文字列を組み合わせることで作成します。
DecimalFormatクラスの使い方
DecimalFormat 変数 = new DecimalFormat(独自フォーマット);
変数.format(値);
DecimalFormatクラスを利用して数値をフォーマット処理したコードを確認しましょう!
import java.text.DecimalFormat;
public class Sample2 {
public static void main(String[] args) {
DecimalFormat format01 = new DecimalFormat("000,000.###");
DecimalFormat format02 = new DecimalFormat("-000,000.00");
DecimalFormat format03 = new DecimalFormat("-###.00%");
System.out.println(format01.format(1234567.89));
System.out.println(format02.format(123456.7890));
System.out.println(format03.format(12.34567));
}
}
実行結果:
1,234,567.89
-123,456.79
-1234.57%
自由に様々な組み合わせができるため、独自のフォーマットをカスタマイズしたい場合はこちらを使いましょう!
NumberFormatクラス、DecimalFormatクラスを使用する場合、出力結果は現在設定しているロケールに深く依存します。
ロケールはその地域の言語体系、通貨体系、数値体系を指して言います。
日本の場合、通貨フォーマットを使用すると通貨記号は \ が表示され、米国である場合、通貨フォーマットを使用すると通貨記号は $ が表示されます。
NumberFormatオブジェクトを生成する際、getNumberInstanceなどファクトリメソッドの引数にロケールを指定することでそのフォーマットにおけるロケールを変更することもできます。
現在のロケールの表示やロケールの変更を行う以下のメソッドが用意されています。
ロケールの表示やロケールの変更のコードを確認しましょう。
import java.text.NumberFormat;
import java.util.Locale;
public class Sample3 {
public static void main(String[] args) {
System.out.println(Locale.getDefault()); //ロケールの取得
Locale.setDefault(Locale.US); //USに設定
NumberFormat value1 = NumberFormat.getCurrencyInstance();
System.out.println(value1.format(100000));
Locale.setDefault(Locale.UK); //UKに設定
NumberFormat value2 = NumberFormat.getCurrencyInstance();
System.out.println(value2.format(100000));
}
}
実行結果:
ja_JP
$100,000.00
£100,000.00
数値を画面などに出力する際、あらかじめ決められた桁数に満たない分だけゼロを付与する処理のことを「ゼロ埋め」と言います。
カレンダーのような月日を常に 2桁で出力し、1~ 9のような 1桁は左側にゼロ埋めされます 。
また会員番号や電話番号のような固定番号は、常に固定の桁数で扱いたいため頭に 0を付与してゼロ埋めします。
ある値をゼロ埋めしたいときは NumberFormatクラス、さらに条件によって桁数を変えたいときは DecimalFormatクラスを用いると簡単にできます。
整数だけでなくあらかじめ小数点が表示されている場合でもそれを含めた桁数が指定した値になります。
NumberFormatクラスの場合
整数値部分の桁数の指定方法
変数.setMinimumIntegerDigits(指定値) //最小値
変数.setMaximumIntegerDigits(指定値)//最大値
小数点以下の桁数の指定方法
変数.setMinimumFractionDigits(指定値)//最小値
変数.setMaximumFractionDigits(指定値)//最大値
DecimalFormatクラスの場合
DecimalFormat 変数 = new DecimalFormat(独自フォーマット);
使用例)
// 0(ゼロ)が指定されている桁に該当する数値が無い場合はゼロ埋めされる
DecimalFormat formatter = new DecimalFormat("000,000.000000");
※フォーマットの指定方法は、こちらを参照してください。
NumberFormatクラスと DecimalFormatクラスでゼロ埋め処理のサンプルコードで確認しましょう。
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class Sample4 {
public static void main(String[] args) {
NumberFormat format1 = NumberFormat.getCurrencyInstance();
Format1.setMinimumFractionDigits(3); // 小数点以下の最小値
Format1.setMaximumFractionDigits(3); // 小数点以下の最大値
Format1.setMinimumIntegerDigits(5); // 整数値の最小値
Format1.setMaximumIntegerDigits(5); // 整数値の最大値
System.out.println(format1.format(1234.56789));
DecimalFormat format2 = new DecimalFormat("000,000.000000");
System.out.println(format2.format(1234.56789));
}
}
実行結果:
¥01,234.568
001,234.567890
NumberFormatクラスでは整数部分は 5桁指定したため頭に 0が一つ付与され、小数部分は 3桁指定したため 7が四捨五入された値が出力されています。
DecimalFormatクラスでは整数部分は 6桁指定したため頭に 0が二つ付与され、小数部分は 6桁指定したため 末尾に 0が付与された値が出力されています。
数値をフォーマット処理をする方法について解説しました。
NumberFormatクラスや DecimalFormatクラスが使えるようになると、多くのデータを扱うときに便利になると思います。
特に DecimalFormatクラス独自フォーマットの設定を覚えるまでは使いにくく不便に感じるかもしれません。
使いこなせるようになると思い通りのフォーマットが設定できて便利ですよ。
またロケールのやり方を知っておくとローカルの言語と国のルールをシステムを一度に設定できるので、調べ物が少なくなるのでぜひ覚えましょう!
【著者】
はじめまして。フォワードソフト株式会社の松倉です。
システムエンジニアとして働き始めたのが2020年4月です。経験や知識がない状態で入社した私は、フォワードソフトの教育研修で一からプログラミングの勉強をしました。教育研修を卒業後、Javaのプログラミングについて初学者向けの記事を共同で制作しています。
知識や経験はまだまだですが、これからいろんな職場で様々な経験しながら勉強していきたいと思っています。
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート
こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ
こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!そもそもStringとは何?『 String 』... Java言語において文字列のデータ型を指します。基本デ
こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!Stringクラスformatメソッドの文字列整形【java.utilパッケージ】Formatterクラスfo
こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者にも✅、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!文字列を扱う3つのクラス【java.langパッケージ】java.langパッケージの文字列を扱うクラスにはS
こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!プリミティブ型と参照型プログラム開発では型を持った変数を使ってデータのやり取りをしますが、データ型によって仕様